Added initial pretty_print methods

Adds basic support for pretty printing. Currently that just means newlines and indentation (using spaces) with an options structure that can be extended in the future so pretty printing can be more sophisticated. But even this makes large JSON structures far more readable.