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
Merge branch 'sihil-enhance-edit-mode' of https://github.com/sihil/hiera-eyaml into sihil-sihil-enhance-edit-mode
Updated version to 1.3.5