[#2] Wrote unit tests, and fixed logic

- Wrote unit tests to ensure that expected output is written, using test spies
  (see http://blog.lyte.id.au/2014/03/01/spying-with-phpunit/ for the approach).
- Modified `RouteCollection` to add a `getRoute()` method; simplifies logic
  required for displaying usage message for a single route. Returns `null` if
  route is unknown.
- Modified logic from PR to pull the `$name` only if no route was matched, and,
  if the `$name` matches a known route, will then call
    `showUsageMessageForRoute()` with the named route, returning a status of 1.
[#2] Detailed naming conventions

- Detailed that commands and route names should have a 1:1 relation in order to
  facilitate the help system.
Allow specifying filters/validators by name

- Allow passing filters and validators by name (instead of requiring instances).
- Allow passing callables for filters and validators; cast them to
  `Zend\Filter\Callback` and `Zend\Validator\Callback`, respectively.