Handle value types for API data

Handle null and non-string values from the API as per https://github.com/praekelt/vumi-go-cuddlers/pull/8#discussion_r15752326.
The checks return promises, so we need to handle that (otherwise sandbox might shut down before they are fulfilled). I think what might be better is to have a single function that verifies the responses and returns a promise:


```javascript
var _ = require('lodash');

// ...

function parseProfile(profile) {
  var errs = [];

  function err(type, name) {
    errs.push([
      "Expected a", type, "for profile field", name, ", got: ", profile[name]
    ].join(' '));

    profile[name] = 'Not set';
  }

  if (!_.isString(profile.first_name))
    err('string', 'first_name');

  if (!_.isNumber(data.id))
    err('number', 'id');

  // ...

  return Q
    .all(errs.map(self.im.log.err))
    .thenResolve(data);
}



function updateContact(profile) {
  self.contact.name = profile.first_name;
  self.contact.extra.userId = profile.id;
  return self.im.contacts.save(self.contact);
}


self.states.add(/* ... */, function() {
  function success(resp) {
    return parseProfile(resp.data)
      .then(updateContact)
      .thenResolve(self.states.create("states:cuddlers:babyChecker"));
  }

  function err() {
    // ...
  }

  return self.http.post(/* ... */)
    .then(success, err);
});

// ...
```