Add the ability to show and confirm changes before doing them.

This adds the ability to do a `--confirm` on an update and be shown what the changes will be and confirm them. I implemented this because I like to see what will happen prior to everything happening. I also implemented a collection class around the different operation type classes, as I thought this made things easier to understand  as I implemented this and extracted some of the code from the Installer class. Something I wasn't too sure about: Is the order I'm returnining the operation types in  `sortOperationsToArray` in the OperationCollection class correct?