Make mkdict use the new operator<<.
Cosmetic changes and minor refactoring.

Added/extended documentation for lots of classes and methods. Use explicit delete in more classes, instead of declaring
private. Use inheritance instead of container member for a few custom containers. Use in class initalization for Params
members with default values.