lil housekeeping
Makefiles: find breadth-first

BREADTH-FIRST
I want util/assert.js to be processed before util/assert/*.js.
When I change makefiles I want to make sure that they all still run.
assert & assert.implemented utility functions

`assert` will serve as a namespace to other assertion functions like
`implemented`.

`assert.implemented` will be used to check that a class implements a
given interface, like so:

var MagicInterface = {
  hocus: function(magic) {}
};

function FlyingMagic() {
  // ... method definitions ...
  XO.assert(this).implemented(MagicInterface);
}
Make use of assert.implemented in UserRegistrationUseCaseMock

Nice!! 8-)
AuthenticationService: use interface conventionally + refactoring

Refactored InMemoryAuthenticationService to use constructs from the same
abstraction level.

Refactored tests for all the related classes to use assert.implemented
utility function.

Refactored LoggedAuthenticationService to take advantage of the
interface definition for method decoration.

Refactored LoggedAuthenticationService test to use stricted mocks so
that the test will sense changes in the mocked classes/interfaces.