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
A few things on this function; having a function return something other than its intended value and null or empty string or zero is confusing.  It leads to situations where the calling code sometimes lies about what the return value is, e.g.:
```php
$map = $fb->connectToFacebook( ... );
if ( isActuallyAMessageObject( $map ) ) { ... }
```
or, it has to be non-descriptively generic, e.g.:
```php
$object = $fb->connectToFacebook( ... );
if ( isAMessageObject( $object ) ) { ... }
```

If someone sees a usage of these variables before the initialization, they're going to be confused.

The other thing is that we shouldn't be instantiating Message objects.  It breaks from the familiar ```wfMessage``` line in code that lets you know when something is being translated, and keeps the translation close to where its being used.  Also, you can't pass a message object to JS if needed.  Additionally, returning a single key/Message object from here robs the Controller from being able to send back the right message for the situation.  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 think you mentioned you were throwing exceptions here before and I think that's the right way to do this.  Exceptions let the controller know a problem occurred but doesn't dictate how the controller should respond.  Yes you will have to test for each type of exception and return the right message key for each call but makes it very clear how a call will fail and what that particular controller is doing about it.