Added divide method and changed private properties/methods to protected

I've added a divide method to the Money class and set all private properties and methods to protected to allow for easier extension. I also added unit tests for the divide method.

Since the rounding mode exception can be thrown now from 2 locations (`multiply`, `divide`) I have extracted it to a new protected method `assertValidRoundingMode`.

Just noticed that git seems to have cut my commit messages off after the first word. Not sure what's going on there...