Switch to heap-sort for lazy seq sorting.

Started documentation

Added internal.clj for internal functions

Switched to a fully lazy version, that approches recommendations from a list-y perspective