add event feature

Guys, I have posted an issue about model update hooking (#182). I did make an event feature that allows developers to listen/subscribe on Model's event (update/save/delete). Please take a look on it.

This is the first time I make code for an opensource, I've make some modification before but they are just for me only. Please comment on my mistake and give me some advice.

### Event feature

1. Each model class has its own 6 events: Before|After Save|Update|Delete.
2. Those events can be subscribed by `add_subscriber`` function or `subscriber` decorator.
3. Those events will be fired from `DMLQuery.save()`, `DMLQuery.update()`, `DMLQuery.delete()` function.

What do you say?