FirebaseAuthenticationService test: little bug fix

This was popping out only in real browsers. Not in PhantomJS.
Custom Chai assertions to make UI tests more readable

UI tests work best when the abstraction level is closer to the domain. For
examlpe, it’s nicer to have:

  expect(form.email).to.be.ui('text field');
  expect(element).to.display('.error-message');

instead of

  expect(form.email.tagName).to.equal('INPUT');
  expect(form.email.type).to.equal('text');
  expect(form.querySelector('.error-message')).not.to.be.null;

The former keep the noise of technical language out. I’ve tried having helper
functions like getErrorMessage() but assertions do not read that well:

  expect(getErrorMessage()).to.exist;

It is better than the original, but still 'getSomething()' feels a bit unnatural.
MockUserAuthenticationUseCase: require explicit stubbing

Implicit is surprizing when you forget about it. This time a test was passing
and I couldn’t understand why.
Extract XO.isValidEmail

I will need it in authentication form too.
UserAuthenticationUseCase: validate email format
FirebaseAuthenticationService.authenticateUser: translate errors

+ added translation for INVALID_PASSWORD
Custom Chai assertions to make UI tests more readable
Chai configuration

- set includeStack - sometimes the failure message doesn’t include the stack
- unset showDiff - although nice, I rarely find it useful
Authentication form: complete v1.0

- per-field validation messages
- isolate directive’s scope
- _reset.css