Move Bindings to a separate file
Move op codes to a separate file
Wrap bindings and symbol table in a context

Use it throughout the compiler.
Use context throughout eval and builtins
Move is_true to space
Simplify context's ctor
Pass context to lookup
Remove an unnecessary import
Promote version of bindings
Add lesser than operator for ints
Add complement
Add remove by reusing filter and complement
Add a pending test case showing a recur bug
Fix a bug in recur with rest args

Don't negate the rest args id in the compiler.

Make the test more specific.
Add list*
Add if-let, fix when-let

Firstly check the condition, then bind.
Add another failing recur test
Fix the recur to destr. fn, minimise the test case

fns with destructuring bindings were implemented using a variadic fn. This
messed the way recur behaved in such functions.

http://clojure.org/special_forms says:
> The recur expression must match the arity of the recursion point exactly.
> In particular, if the recursion point was the top of a variadic fn
> method, there is no gathering of rest args - a single seq (or null)
> should be passed. recur in other than a tail position is an error.