Fix mutable defaults in Printer __init__

The printer init used some mutable types (dict and array) for the
defaults in the __init__. This is incorrect because the defaults are
interpreted once when the function is defined, so subsequent invocations
will get the mutated arguments instead of the empty lists and dicts as
intended.

Also fixed some improper indendtion and changed a comparison to None to
the proper form.