Make Lemur suitable as a library

Guided by https://github.com/TheClimateCorporation/lemur/issues/23 I've continued the work of @jimdowning.

The code should be suitable now to use a library, although it is a bit ugly still due to the use of one dynamic var. This was the easiest option for now. I hope to do some more iterations later on. I say "should" because I still need to test it from a project. The tests I could run without the need for AWS access were succeeding, but not sure about the others.

For short-term future work I see the following:
* Have library functions that take the context as an argument
* Move dsl functions in `lemure.core` to a separate namespace

Happy to hear your first feedback on these changes
Think you might still need the defonce here.  If this clj code is read multiple times, different contexts will be created.  I forget what scenario causes this to happen, but that is why i added the defonce in line 70.

Of course, this is moot if we move away from a context var, to an explicit context passed around through all the functions.  But until we get to that point, need to make sure it doesn't blow up for existing command line users.