Update keg/tap api

I think kegs and taps should both be aggregates due to transactional consistency.  I should be able to update a keg and a tap independently of each other without having concurrency issues.

I also think we should maintain the pours on the tap instead of the keg.  A user pours beer from the tap, not from the keg.  And this way it's naturally accumulated on the tap.  It should be easier to separate pours per keg this way instead of combine them per tap the other way.

I've also added domain events.  Haven't really tested them much yet though.