Implementing PromiseEff

This specialization of Promise is meant to address issue #12. Consider
the following example.

import Debug.Trace
import Angular.Promise
import Angular.Promise.Eff
import qualified Angular.Http as H

foo :: forall e f a b. a -> PromiseEff e (trace :: Trace | f) b Unit
foo _ = liftPromiseEff' $ do
  trace "Hello world 2."
  trace "Hello world 3."

bar :: forall e f a b. a -> PromiseEff e (trace :: Trace | f) b Unit
bar _ = liftPromiseEff' $ do
  trace "Hello world 4."
  trace "Hello world 5."

controller http = do
  promise <- H.get "http://localhost:9501/examples/Todomvc/main.html" http
  return $ unsafeRunPromiseEff $ promiseEff promise >>= foo >>= bar

This results in the trace statements being run once the promise is
resolved.
Merge branch 'topic/promise-eff'