Make publishers transformable.
Add some extra type info to stop idea complaining.
Provide method for converting a Publisher to a Promise.

Closes #488.