Fix #638: Make nth return default value when out of bounds

This PR fixes #638.

```hy
=> (nil? (first []))  ; no more IndexError
True
=> (nil? (nth ["a" "b"] 10))  ; nil by default
True
=> (nth (range 10) 100 "hi!")  ; with default specified
'hi!'
```

Docs/tests updated accordingly. Thanks.
update syntax here to (nth coll n [default nil]) ? also probably mention that we return some optional specified default if out of bounds..