Remove Cascading platform from the base logic

To allow additional platforms to be added to Cascalog, we must first extract the Cascading platform from the base logic.  This pull request begins the attempt to do that.  Additionally, it begins adding in a Clojure platform, but that is barely built.

## How to use

To set the platform you need to use the **with-context** macro and specify which platform to use.

#### Cascading 

    (require '[cascalog.api :as api]		 
        '[cascalog.logic.platform :as platform]
        '[cascalog.cascading.platform])
    (import 'cascalog.cascading.platform.CascadingPlatform)

    (let [nums [[1][2]]]
        (platform/with-context (CascadingPlatform.)
            (api/??<- [?n] (nums ?n))))
    => ([1] [2])

### Clojure

    (require '[cascalog.clojure.platform])
    (import 'cascalog.clojure.platform.ClojurePlatform)

    (let [nums [[1][2]]]
        (platform/with-context (ClojurePlatform.)
            (api/??<- [?n] (nums ?n))))
    => ([(1)] [(2)])

## Steps taken so far

* removed all cascading dependencies from the logic namespace (except for testing.clj)
* pulled in some functions from the cascading namespace into the logic.platform.clj since they appear platform agnostic (like compile-query)
* extended IPlatform to handle to-generator so we only need one dynamic var (*context*) and not two (*context* and *runner)
* built my really simple clojure platform and gave it a new namespace
* modified some tests so they continue using the Cascading platform.  But many tests (about 21) currently fail and I will fix them once I'm more confident the direction I'm moving is the right one.     

## Questions

* Is this approach moving in the right direction?
* Is with-context a good way to handle specifying which platform to use?
* Is creating EmptyPlatform a suitable solution to giving a dynamic var a default value without pulling in an implementation namespace?

I don't really have a preference.   I think it's an interesting idea to add a cascalog.cascading.api namespace, but that would definitely break existing code (although pretty easily fixed).   

I implemented a set-context-* in cascalog.api since it was the simplest implementation.  So the code will look like this:

    (require '[cascalog.api :as api])
    (api/set-cascading-context!)
    (let [nums [[1][2]]]
        (api/??<- [?n] (nums ?n)))
    => ([1] [2])

So I defer to you and others on what design is preferred.

#### Additional changes I've made

* got all the tests to pass
* ripped out my hacky way of setting the context from all the tests and have implemented a setup step in the tests to set the context (like [this](https://github.com/nathanmarz/cascalog/pull/256/files#diff-1d357cbcccdf2fb115775c5c3131bc78R9))
* modified [can-generate?](https://github.com/nathanmarz/cascalog/pull/256/files#diff-1201cd746a8e391bfca7cdf4327ec042R135) to be a function so it gets the context at runtime instead of initialization