*
@method add(<el>, [index])
@returns Array
@short Adds <el> to the array.
@extra If [index] is specified, it will add at [index], otherwise adds to the end of the array. %add% behaves like %concat% in that if <el> is an array it will be joined, not inserted. This method will change the array! Use %include% for a non-destructive alias. Also, %insert% is provided as an alias that reads better when using an index.
@example

[1,2,3,4].add(5)       -> [1,2,3,4,5]
[1,2,3,4].add([5,6,7]) -> [1,2,3,4,5,6,7]
[1,2,3,4].insert(8, 1) -> [1,8,2,3,4]

*
function(el, index) {
      if(!isNumber(number(index)) || isNaN(index)) index = this.length;
      array.prototype.splice.apply(this, [index, 0].concat(el));
      return this;
    }