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'm really excited about this too!

Just 2 my cents regarding the context switching. I'm not very familiar with the new code, so please ignore this if it doesn't make sense.

I think it makes development for the end-user easier if you can switch context without having to switch namespaces. This would allow for instance to have your tests run against the Clojure platform with one simple change. Everyone would program against cascalog.api and switch the context depending on where it needs to run. So +1 for your current approach.

I also think you don't have to break existing code in this case, because you can set the default context to cascading if it has not been set yet.