UC-116 Facebook Client Service & improved user-mapping related error handling

This adds a Facebook Client Service to unify the way user mappings are created. This allows for all controller logic to go through the service in order to create a user mapping. This service is the front for communicating with FacebookMapModel (partially for now). We can then refactor more operations later into the service to avoid duplicate logic in multiple places.
This also simplifies error handling; now that we have more error cases to cover.

* Also excludes UserSignup special page from return-to logic, so that user does not land on it after logging in.

https://wikia-inc.atlassian.net/browse/UC-116
@garthwebb I definitely agree with your argument in throwing exceptions here; however, the reason for this was that messages also need to support message parameters. Exceptions could not facilitate this; hence their removal.

> having a function return something other than its intended value and null or empty string or zero is confusing.

Granted, it can be confusing, despite the output of the function being clearly documented. I am open for a better design as long as it incorporates message parameters.

Would slightly different way of using Messages in controller code be a downside?

> They may all be the same message at this point but what happens when product decides UserLogin needs a slightly different way of letting the user know they've got a repeat account.

I'd argue, one major advantage to having a common place handle errors is that it discourages one-off and inconsistent solutions for different cases.