Tidy up logging and add debug / quiet modes

Added a very simple logging and debug framework, adding two
new command line options (`--debug` and `--quiet`) and two new
methods in the Utils class (`debug` and `info`).

`--debug` will print all messages to STDERR, `--quiet` will print
no messages whilst the default state is to print messages sent
to the `info` method, but not to the `debug` method.

At startup, the Options.debug method is now called every time,
although it uses the debug method to output the information and so
will only appear when the `--debug` flag is used.

Also, the return value of an action is now only printed when it
is not `nil`. The `edit` action has been modified to return `nil`.

Finally, I also tidied up the short options so those that are used
frequently are explicity provided.
First elements of parser
Complete the token parser and tests

This completes the implementation of a token parser which
makes it easy to represent an EYAML file in a simple
data structure in memory.
Change the encrypt_action over to use the parser
Change the decrypt action over to the parser
Remove lines that are no longer used
Change edit action to use parser (and add indexing)

 - No longer re-use encrypt and decrypt actions
 - Add index generation and parsing to tokens code
 - Change parsing regex code to use reluctant modifier (on occassion it could be too greedy)
Denoise the edit mode

 - When in edit mode, statefully track the blocks that have decrypted and avoid
re-encrypting values that have not actually been edited. This way we do not
get noise when looking at differences in the VCS of your choice.
 - Rearrange to remove files more consistently
 - Don't raise an exception if the file hasn't been modified at all
Use the Utils.info loggin method
Check that values haven't been copy and pasted as per the plan in issue #25
Migrate decryption in hiera to new parser system

Add new element to puppet test to try and track down root of issues #24 / #31 - can't
reproduce it, so might have been fixed by the migration.
Remove use of RegExp match block method that doesn't exist in 1.8.7
Fix puppet test and implementation

 - Fix the puppet feature test to match the whole file instead of a phrase being present in a file (this passed even though it was surrounded by the DEC[]! format)
 - Add new test for a block in a hiera file (contains spaces)
 - Fix the migrated decryption functionality but adding and using a new TokenType for the sole use of the backend
Don't call a method that isn't in Ruby 1.8.7
some additional guided steps to ensure maximum success for people using this module with puppet
some additional guided steps to ensure maximum success for people using this module with puppet
some additional guided steps to ensure maximum success for people using this module with puppet
some permissions fixes for the keys dir/files and link to removing sensitive data, as recommended by https://github.com/sihil
Fixed up the glob pattern for pre 1.8 rubygems
adjusted encryption example to assist users in avoiding this bug https://github.com/TomPoulton/hiera-eyaml/issues/30