Style fixes

* Use private readers.
* Don't use let and before in tests.
* Sort import list alphabetically.
* Fix line breaking and lack of parentheses.
Add Random algorithm

This algorithm picks elements randomly from the source dictionary.
Write failing high-level test.
Use 'context' when describing contexts.
Change #passwords to #lines.
Don't anticipate future code with let statements.
Added two more high-level tests.

Refactor and expand helper class.
Remove 'let' for consistency.
Add pending status to tests I'll do later.
Use hash for initializing CommandLineOutput
Add unparsed_args ivar in CommandLineOutput
Only store options in initialize method

All procedure except binding instance variables should be handled
outside of initialize.
Spell variable names out

Don't fear the line break.
Use private readers instead of ivar calling
Style and top-level comment
Rename CommandLineOutput to CLI
Extract CLI output generation into own class

In anticipation of creating an argument parser (to prevent the CLI class
from having multiple responsibilities), all output generating logic in
CLI was moved to CommandLineOutput.
Add ArgumentParser class

CLI class was modified to support arguments and options.
Add empty args to test to prevent false red tests

If no arguments are provided with the :args option, CLI sets the
unparsed_args variable to ARGV. This is fine if you invoke rspec without
any flags, but if you do something like "rspec --format=doc" then the
application will throw an "invalid option" error during some tests (due
to rspec having a different set of flags than this application).

This change ensures the args are empty.
Remove unrelated pending tests

These don't belong in this branch.