Adds example project

- Fixes bug in PromiseZ implementation where chained promises
  are released before their handlers can execute
- Uses NSRecursiveLock instead of @synchronized(self)
- Removes private header and instead directly injects it in the
  tests