VfmdDocument: Make the top-level interface more user-friendly

In this updated interface, the document encapsulates the
registry and the linkRefMap, so that for the basic use case,
the interface does not expose the user to the registry and
linkRefMap.
NullBlock: Remove unnecessary blank lines in the code
Block handlers: Change endBlock() interface to be swig-friendly

Returning an object pointer from a method overridden
using SWIG directors doesn't work well.

Ref: SWIG Warning 473: Returning a pointer or reference
in a director method is not recommended
VfmdLinkRefMap: Use correct constness in the public interface
Ref-resolution block should own the link-ref-map
It's cleaner to use special-case code for paragraph blocks
VfmdBlockLineSequence: Make isEndOfBlock() non-const for flexibility
Handle paragraph-abutting blocks more generically

Paragraph-abutting blocks are blocks that can immediately follow a
paragraph without a separating blank line between the block and
the preceding paragraph.

In this process, the interface for the block handler is also changed.
Paragraph: Make paragraph-handling in-built in a VfmdLineSequence

After this commit, the paragraph handler is not managed by the element
registry, but instead, is automatically invoked by the line sequence
when no block handlers are found for a particular line.
Code-block: CodeBlockLineSequence::content()
Avoid squeezing block contents

Squeezing might cause an unnecessary copy of the data in the bytearray.
VfmdBlockLineSequence: Add comments on inheriting from the block line sequence
VfmdSpanElementHandler: Fix indentation
VfmdElementTreeNode: Make text content of nodes accessible with a virtual method
Paragraph: Use the line content itself when processing the first line

Copying the line content (instead of appending) makes it possible
to prevent a copy-on-write for the paragraph text for top-level
paragraphs.
VfmdElementRegistry: s/createRegistryWithDefaultElements()/createRegistryForCoreSyntax()/g;