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.
Yes totally. I looked for examples showing optional values, but i didn't find anything...until now!

I'll write up some docs changes and fix `read`!