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.
@theanalyst, thanks for pointing it out. 

At present, there are different ways keyword/optional arguments are specified in the docs. Please consider the following code-doc pairs.

```hy
(defn disassemble [tree &optional [codegen false]]
  ...
```

```
Usage: ``(disassemble tree &optional [codegen false])``
```

vs

```hy
(defn read [&optional [from-file sys.stdin]
                      [eof ""]]
  ...
```

```
Usage: ``(read [from-file eof])``
```

I don't want to complicate the matter, but maybe **@hylang/core** can come up with a standardised way of doing this? I'll follow whichever is decided.