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
```


The problemt is that we can't really do that without inserting the ugly `*in*` hack i did earlier. We might have edge cases like
```
(foo bar baz
 bar foo bar
 foo foo bar)(+ 2 2)
```
What happens with the last form when readline have caught them both, tokenized them and only spits out the first? Figure that out and we could maybe attempt a readline instead of reading byte by byte.

When it comes to timing:
```hy

(import io)
(import time)
(def buf (io.StringIO "(foo bar baz\nbar foo bar\nfoo foo bar)"))
(def t (time.time))
(apply read [] {"stdin" buf})
(print (- (time.time) t))
```
Ends up at `0.0125...`. Not the best profiling, but i don't think time will be a problem.