SES-1669 SES-1670 : Add QueryResultWriter interface

In order to handle stylesheet and link elements, both BooleanQueryResultWriter and TupleQueryResultWriter need to know when the document starts and when the header starts and ends.

Together with those events, there is an equivalent event for end document.
SES-535 : Add JSON format constant to BooleanQueryResultFormat
SES-1669 : Implement support for link and stylesheets for JSON

Stylesheets are ignored, while links are added as an array
SES-1669 : Implement support for links and stylesheets for SPARQL XML

Stylesheets are added after the xml element and before the sparql element

Links are added together, and should therefore all be after the bindings names, as required by the format, however, this distinction is not required, as the binding names may be empty in a valid results document.
SES-535 : Implement support for SPARQL Boolean JSON Writer
SES-1669 : Move Binary format header writing to startDocument

Add stubs for other methods that are not relevant to the Binary query result writer
SES-1669 : Add stubs for new methods in boolean, csv and tsv writers
SES-1669 : Fix BinaryQueryResultWriter for TupleQueryResultHandler

startDocument was not being called
SES-1669 : Ensure that calls through the TupleQueryResultHandler will still start the document and start the header section before startQueryResult

Removed endDocument from the interface as it is not compatible with TupleQueryResultHandler. Its functionality is in endQueryResult for TupleQueryResultHandler and write for BooleanQueryResultWriter
SES-1669 : Cleanup public method declaractions in interfaces
SES-1669 : Add @since annotations to QueryResultWriter
SES-1669 : Fix javadoc for new writeStylesheet method in XMLWriter
SES-1669 : Reset documentStarted boolean in BinaryQueryResultWriter