Update Promise's state handling to be thread-safe

Remove state from Promise and use the state that's already tracked by
Composable instead. Add isError, isSuccess and isPending methods to
make this state available to clients.

Fixes #40
Fixes #35
Merge branch 'thread-safe-promise-state'