Context management classes now store constant copies of the tags they
are supposed to hold. So, they are immutable objects now.
Functions that manipulate context create new object copies as needed.
constexpr was added for class constructor and functions.
Indentation generator now used four space by default.
Also, the amount of desired spaces can now be specified at call site.
Added helper methods to return 'indented' and 'unindented' version of a
given indentation generator object.