Enable parsing of usage strings at compile time

This pull requests introduces the module `System.Console.Docopt.QQ` which exports two `QuaisQuoter`s: `docopt` and `docoptFile`. `docopt` parses a literal string &mdash; usage string &mdash; into some abstract data type (a wrapper around `OptFormat`); `docoptFile` takes a file and parses its contents. Parsing is done at the compile time, which means an invalid usage string will result in a  compile time error.

Example from Readme:

``` haskell
{-# LANGUAGE QuasiQuotes #-}
module Main where

import Control.Monad (when)
import Data.Char (toUpper)
import System.Console.Docopt.QQ

patterns :: Docopt
patterns = [docopt|
Usage:
  myprog cat <file>
  myprog echo [--caps] <string>

Options:
  -c, --caps    Caps-lock the echoed argument
|]

main :: IO ()
main = do
  args <- parseArgs' patterns

  when (args `isPresent` (command "cat")) $ do
    file <- args `getArg` (argument "file")
    putStr =<< readFile file

  when (args `isPresent` (command "echo")) $ do
    let charTransform = if args `isPresent` (longOption "caps")
                          then toUpper
                          else id
    string <- args `getArg` (argument "string")
    putStrLn $ map charTransform string

```

See docs for `System.Console.Docopt.QQ` for more info.