Add alternative acceptance test
Add names_of_available_algorithms without test
Change test to not stub method
Add #descendants method to Class

Lists all the classes that inherit from the class that receives the
"descendants" message.
Make algorithms inherit from Algorithm

With the help of the Class#descendants method (implemented in 3724002),
these changes will allow for listing all the available algorithms.
Add `Algorithm.names_of_all_algorithms`

This also necessitated the addition of `Algorithm.name`, which is mostly
used on classes inheriting from Algorithm (`Algorithm.save` returns an
empty string, so not very useful).
Show available algorithms if argument is missing

Previously when the `-a` flag was passed without an argument the
available algorithms weren't shown.
Add top-level documentation to class
Use Algorithm.descendants instead of constant Hash

By using Algorithm.descendants the list of algorithms can grow without
the need for adjusting the constant.
Pass the error messages with the exception

I don't want explicit $stderr access deep down in the internal classes.
Address Hound complaints

Move the array down to the next line instead of breaking it.
Have arguments be on their own lines.
Merge pull request #31 from linduxed/alt_impl_for_pr-29

Display available algorithms if `-a` flag is provided without argument