Give warnings for unknown Doxygen commands in Doxygen parser.

Silently ignoring unknown Doxygen commands is not a reasonable default
behaviour, it's simple enough to turn off the warning if the command is really
supposed to be just ignored, but it's too easy to not notice a real problem if
it isn't.

Turn WARN_DOXYGEN_UNKNOWN_COMMAND on by default and add a test to the errors
test suite checking that it is indeed given.
Describe Doxygen-specific %features in a single place.

Put them all in a single table instead of describing doxygen:notranslate
separately for Java and Python when it does the same thing for both.

And while doxygen:nolinkranslate and doxygen:nostripparams are currently
Java-specific, it probably won't remain this way and these features would
either be made to work for Python as well or, perhaps, removed entirely.
No real changes, just pass original command to commandBelongs().

Don't transform commandBelongs() argument to lower case as it's done inside
the function itself anyhow -- and it will need the original case soon.
Recognize unknown Doxygen tags correctly.

DoxygenParser::commandBelongs() returned the same value (0) for simple
commands and unrecognized commands. Fix this by returning a different NONE
value for the latter.
Get rid of findCommand() which duplicaed commandBelongs().

There is no need for two functions for finding the value of a key in the map.
Pass the node the Doxygen comment is attached to to DoxygenParser.

This will be needed to take into account various Doxygen-specific features
that can be attached to this node.
Allow upper case letters and digits in Doxygen words.

Although all standard Doxygen commands are composed from lower case letters
and some special symbols only, custom commands can include upper case letters
and digits too.

Also use a symbolic constant defined once instead of repeating the same set of
characters twice.
Add a possibility to flexibly ignore custom Doxygen tags.

Add %feature("doxygen:ignore:<command>") implementation, documentation and
test case.

This feature allows to use custom tags in C++ Doxygen comments for
C++-specific things that don't make sense in the context of the target
language and also allows to insert contents specific to the target language in
the C++ comments using (different) custom commands, which is very useful in
practice to explain the particularities of the API wrappers.
Use "//", not "#", for comments in SWIG input.

One Doxygen test file used "#" for comments for some reason, this doesn't work
with the latest SWIG trunk where a lone "#" is considered to be an unknown
preprocessor directive.