Add the long awaited read!

Refference: #7 #264 #375 #551 #622
and for fun:
```hy
=> (defmacro loop [&rest args] `(while true ~@args))
=> (-> (read) (eval) (print) (loop))
(+ 2 2)
4
(print "hello")
hello
None
(def a 2)
2
(+ 1 a)
3
```


comparing something like

```hy
(foo bar baz
 bar foo bar
 foo foo bar)
```