Fix bug in `initial` and `rest` function. Dont use `array.filter` function

Fixed bug when using range to implement `initial` and `rest`

I dont think we should use `array.filter` for performance issue
Let 's consider this example

```swift
let a = []
for item in 1..100 { a += item }
a.filter { println($0); return $0 % 10 == 0 }

# println function will be called 200 times
```
Let 's consider this example

```
let evenFilter = { (num: Int) -> Bool in
    println(num)
    return num % 2 == 0
}


let array = [1, 4, 5, 32, 12, 2]
let b = array.filter(evenFilter)
println("b = \(b)")
# 1
# 4
# 5
# 32
# 12
# 2
# 1
# 4
# 5
# 32
# 12
# 2
# b = [4, 32, 12, 2]

```

It seems native filter function has a bug which make closure in `filter` run twice. 

That 's reason I implement `filter` by myself.