Introduce types for UserID, ItemId and U2IAction

I like the fact that we now have types to represent the domain ( user, item, action, location ), it would be nice to go one step further and create marker types for the the Ids: 
This commit creates UserId and ItemId value classes to wrap the strings and uses them to describe the correct type in the various APIs.

The user to items actions are limited in predictionIO, this is now represented by the type U2IAction which encodes the possible values at the moment. For now I have used a sealed trait (since this can not be extended) Once predictionio supports custom types we will be able to remove the sealed restriction. At that point it is possible that a custom method to create an implicit json format which takes into account the custom actions will have to be defined.

I added the appropriate json transformations to keep the json serialization identical.