Overwrite Option and Middleware

Hi, I finally got around to implementing a couple of things. The first commit adds back the overwrite option, which defaults to false on a create and true on an update. This is potentially breaking if you were relying on create to overwrite. You would have to pass { overwrite: true } to get the same behavior.

The second commit adds mongoose like hooks to the model.