LPS-39662

Hey Brian,

This pull is necessary to allow Content Targeting plugins to get access to some categorization/preference info from guest users. Thes "preferences" are intented to store things such as what the user "likes" or "dislikes" so content targeting, or other application, can benefit from this. These preferences need to be present even for unregistered users, so they very likely should/must be stored out of the portal. The main store are going to be cookies, but it may not be the only one, as we could think about having other sources of information such as social network information, among others.

There are two different implementations, one with only strings as key - value pairs and the second one using an interface and a wrapper around Cookie.

I prefer the class approach for the following:

Since this is API, we are not binding to a representation using string that could lead to users of the api to serialize data into strings or loose information (such as domain of the cookies that could be of use to some module)
Different plugins or core modules could add their own "preferences" representation without having to modify the API