Add escaping support, and overhaul things a lot

Now uses a separate tokeniser, which is a much cleaner way of doing things. Interface does not change.

Squashed commit of the following:

commit 705797d7e51d90e127836791a457f68528b2dd06
Author: Oliver Beattie <oliver@obeattie.com>
Date:   Tue Aug 19 17:17:55 2014 +0100

    Fix Golint error

commit d1275de2069a1d5506b34f8622e2b2a3f9c207d2
Author: Oliver Beattie <oliver@obeattie.com>
Date:   Tue Aug 19 17:16:49 2014 +0100

    Better commenting

commit e8c34513908ed032370028bcee2b0bf2849f4326
Author: Oliver Beattie <oliver@obeattie.com>
Date:   Tue Aug 19 17:11:29 2014 +0100

    OMG it works 😍

commit 2e44f03bd9a0af59c53dc62df12e7c95ec8bcc61
Author: Oliver Beattie <oliver@obeattie.com>
Date:   Tue Aug 19 16:39:33 2014 +0100

    Allow tokeniser peeking

commit 35df2aee1e4ad08c058a3a0dfb9991a0212cb430
Author: Oliver Beattie <oliver@obeattie.com>
Date:   Tue Aug 19 07:30:40 2014 +0100

    Moar progress

commit 70c63167b7bf2811fe4f5c25f0f03472794697e9
Author: Oliver Beattie <oliver@obeattie.com>
Date:   Mon Aug 18 20:50:29 2014 +0100

    Full tokeniser tests

commit fc103e09ac60fbbb41624bd6544feef7d2dcabd3
Author: Oliver Beattie <oliver@obeattie.com>
Date:   Mon Aug 18 20:35:35 2014 +0100

    Revert "Show verbose Travis output only if tests fail"

    This reverts commit 6213b3d769cf8c444148441bc6d176df661773fc.

commit 6213b3d769cf8c444148441bc6d176df661773fc
Author: Oliver Beattie <oliver@obeattie.com>
Date:   Mon Aug 18 20:29:37 2014 +0100

    Show verbose Travis output only if tests fail

commit cd45371460bfb8b9b44861649b1f37bf633bc1f0
Author: Oliver Beattie <oliver@obeattie.com>
Date:   Mon Aug 18 20:29:27 2014 +0100

    Working tokeniser 🎉

commit fc032a1e2ea3284f1b8b307ae796a23be8cdd820
Author: Oliver Beattie <oliver@obeattie.com>
Date:   Mon Aug 18 19:57:10 2014 +0100

    Continuing tokeniser

commit e8a1eeab77068b7e4d2c8d55f02b2d44ed04a632
Author: Oliver Beattie <oliver@obeattie.com>
Date:   Mon Aug 18 19:56:55 2014 +0100

    Begin tokeniser

commit be214b0a0cc6ab723f3a78f812f561982ff387a8
Author: Oliver Beattie <oliver@obeattie.com>
Date:   Sun Aug 17 23:13:38 2014 +0100

    Begin implementing escaping (doesn't fully work 😰)

commit 1f15983e78cc53b584af1daf969040375ba60eaa
Author: Oliver Beattie <oliver@obeattie.com>
Date:   Sun Aug 17 23:13:14 2014 +0100

    Add a function to properly escape strings within globs

commit e24cc575792b9794f7366ed284b9e2580db26467
Author: Oliver Beattie <oliver@obeattie.com>
Date:   Sun Aug 17 23:12:47 2014 +0100

    More globstar tests (covering the special head/tail cases)