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
thsi is actually concerning... what if the user uses yaml reponse format or cbor then we render still in JSON? I think we need to find a better way to serialise this. I really don't know from the top of my head how to solve this to be honest...