Re-implement base Effect and perform.
Merge pull request #10 from tomprince/better-intent-dispatching-2

Continute implementing better-intent-dispatching on top of better-intent-dispatching-2.