Privatizes several functions

Only expose fns that need to be called outside the namespace
Update specs accordingly
Refactors some loop/recur fns

How nice and concise and Clojurey!