implemented keyword table lookup

Added vhdl/tblgen-keywords.cpp that generates a lookup function for keywords.
Its structure is fairly efficient, performing a branch for every character of
the input iterator. This generates the vhdl/keywords.hpp file which needs to be
in the source tree as a header file, since the mapping function is a template.

The LexerNovum uses this function to translate identifiers into keywords as soon
as they are read. To do this, the start and end pointers into the source buffer
are wrapped in unicode::casefold_iterator objects. These are then passed to the
lookupKeyword() function.

Also moved the TokenType enum into its own file vhdl/TokenType.hpp.
src buffer now has utf8char contents

Changed the data type for SourceBuffer objects from char* to utf8char*. This
stresses the fact that all source code needs to be UTF-8 encoded, and makes
using the pointers with the unicode library a bit less verbose.

Also exported utf{8,16,32}char and unichar into the llhd namespace. This gets
rid of many using llhd::unicode::utf8char statements. Mere convenience.