Removed unneeded using statements
Moved most syntax handling into TagStream

The TagStream now handles almost all syntax.
Moved most syntax handling into TagStream

Forgot to commit a file.
Cast directly to type instead of intermediate one

Changed cast of:
object -> IEnumerable<object> -> IEnumerable<IDictionary<string,
object>>

- to -

object -> IEnumerable<IDictionary<string, object>>

removing the intermediate type.
Moved TagStream into the Parser namespace

The TagStream was moved into the Raindrop.Backend.Parser namespace in
preparation for splitting the parser into simpler pieces.
Added FarPeekTextReader

The FarPeekTextReader wraps a regular TextReader with a small buffer to
allow peeking up to two characters ahead.

Peeking at two characters is useful for the parser because peeking at
one character might return '<', but the second character may or may not
be a ':' and reading the first could put the parser in an invalid state.

Someone needs to keep track of the extra character that needs to be
read, and a special object for the purpose seems like a good idea.
Added some FarPeekTextReader tests

Added some tests for the FarPeekTextReader. They aren't exhaustive.
Comments, cleanup, bugfix in FarPeekTextReader

Several changes to the FarPeekTextReader:

- Added some comments describing functions
- Coding style changes to some parts
- Fixed a bug where a FarPeek would unset EOF
- Added comment describing bug fix.
Added "Done" message to tests

The TestHarness now prints "done" when it finishes, since otherwise it's
hard to tell the difference between all tests completing successfully or
a test getting caught in an infinite loop.
Added more FarPeekTextReader tests

- Check if reading through the stream works
- Test Peek, FarPeek, Read sequence works
- Verify FarPeek doesn't unset EOF (regression test)
Added TokenReader class

The TokenReader handles reading tokens out of a FarPeekTextReader so the
TagStream doesn't have to. Now the TagStream can focus on parsing
strings into TagDatas and the TokenReader can focus on reading those
strings.
Rename TokenReader to TagReader

TokenReader was designed for reading tags, not tokens, so the name
TagReader makes more sense.
Changed TagStream to use TagReader

The TagStream now uses a TagReader instead of trying to read from the
stream itself. Now it only contains logic for parsing strings into
TagDatas and delegates reading to the TagReader.
Rename TokenReader to TagReader

The previous commit by this name left out a file by mistake.
Moved tags into Tags namespace
Changes to tag structure

- End tags were moved into the files of their starting tags
- Helpers.Pass() renamed to Helpers.Truth()
- RootTag deleted; it added no value beyond its BlockTag base, which is
now used instead
- Descriptions of tags improved
- BlockTag moved into the "Block tags" folder
Removed setting to ignore missing keys

A missing key in the IDictionary probably isn't normal, so the templater
no longer allows ignoring them.
Changed template file extension

Templates now use .rdt (for RainDrop Template) files instead of .rdl
(for RainDrop Language).
Updated readme

The readme hadn't been updated for a while; now it has.
Updated error handling

- Tags that require parameters now delegate checking to
Tag.RequireParameter() so checking is consistent.
- Separate exceptions now exist for parsing and templating errors
- Requiring parameters now detects empty parameters as well as null ones
- Exception error codes were removed until a good reason to have them
arises.