Use RSpec's `around` helper for STDERR cleaning

Every test for the argument parser prints to STDERR if something goes
wrong, so the STDERR stubbing is necessary on every test.
Add acceptance test for typeable passwords

Includes a matcher which checks whether parts of the generated passwords
com from a given list of words.
Make acceptance test use dictionary

Also print more helpful error message if the executable prints an error.
Add unfinished TypeableAlgorithm

Test suite is far from complete.
Put feature spec in pending block

I'll wait until the TypeableAlgorithm is ina decent state before putting
this test online.
Don't use deprecated RSpec pending block syntax
Write algorithm test for different layouts
Wrap TypeableAlgorithm in module clause
Add top-level documentation to TypeableAlgorithm
Tweak TypeableAlgorithm tests to include layouts

Not yet implemented, but right around the corner.
Make TypeableAlgorithm resemble HeadAlgorithm

Main structure replicated with minor changes.
LayoutBasedDictionarySorter referenced but not implemented.
Use stubbed sorting class in tests

Instead of creating a dictionary with a Tempfile (for the purpose of
returning an array of words), use a sorting class with a stubbed method
which returns the desired array of words.

Add skeleton LayoutBasedDictionarySorter class and tests.
Make TypeableAlgorithm inherit from Algorithm
Use one spelling of "typeable"

In other places "typeable" is used instead of "typable", so let's
conform to that.
Rename file to be spelled as "typeable"

Another case of not conforming to the rest.
Use "min_password_length" everywhere

Currently both "min_length" and "min_password_length" are used. Let's
stick to one.
Initialize algorithms with options hash

Instead of having regular arguments in the `initialize` methods of the
algorithm classes, use an options hash for initialization.

Up until the implementation of TypeableAlgorithm, all algorithms took
the same amount of arguments to instantiate them. Since this is no
longer the case and I want to retain the ability to instantiate all of
them with the same interface, this change is necessary.
Change order of words in dictionary in test

If the high_typeability_words words are written to the dictionary first,
an easy and unintentional way of making the tests go green is to simply
read the first words in the dictionary.

While not a great improvement, this change in the test structure will
prevent the silliest of implementations from making the test go green.
Implement LayoutBasedDictionarySorter

This patch provides the remaining implementation of
LayoutBasedDictionarySorter, up until now a skeleton class.

The MotionAnalyzedWord class is included in the same file as
LayoutBasedDictionarySorter because it's functionality that's so closely
tied to it that it could almost have been implemented inside
LayoutBasedDictionarySorter.
Change "-l" flag to "-c"

"-l" will be necessary for "Layout", while "-c" works as "characters".