Remove marks.encode() as a way to register encoders, and use options.encode instead.
Use sub-classes of Node (proper inheritance) for registered tags.

So tag objects now properly inherit from their registered definitions.