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.
Improved missing key error reporting

- TemplatingException renamed to KeyException
- KeyException, ParserException and RaindropException messages refer to
exception properties of interest
- KeyException provides a full path to the missing key and copy of the
data dictionary when a key is missing.
- BlockTag remembers and applies the name of the template and contents
of the data dictionary when a templating error occurs so the template
and data can both be easily identified