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.
Guess we should go with &optional in the syntax (ie first one) @hylang/core I guess we can standardize that format for functions with optional args