Fixed `tail`

- `(tail (range 1 5))` will now yield `(2 3 4 5)` instead of `(1 5)`.
Implemented Sharing

- Oh my god fast algorithms everywhere.
- Also revamped unit test messages.
Added Project Euler Problem 2 and a few new prelude functions