Cleaner query parse error feedback

Provides the line and column number in user input where errors were spotted and a succinct parse error message, free of server-side stack trace info.

Many "*parser" classes are changed but the core framework changes are:

1) XContentParser can now return a new "XContentLocation" object describing position of last token parsed
2) Existing SearchParseException and QueryParsingException classes have all constructors changed to take an XContentLocation object to encourage supply of detailed parse feedback
3) Common "UserInputException" interface introduced for exceptions relating to user input (the 2 above).
4) SearchPhaseExecutionException that gathers results from many shards holds onto only the first of several (typically duplicate) UserInputExceptions from shards
5) BytesRestResponse outputs extra JSON fields for parse failures including line, column and succinct error message.


Closes #3303
I wonder why you don't serialize this `structuredExplanation` in the `writeTo/readFrom` this won't work across nodes?