Refactored changes to use inheritance instead of enum for action

- Implies using DataContract XML-Serialization, removes dependency on
Json.NET
- No more code contract warnings left
- Code Contracts now checking public surface contracts in release mode
only