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
The Json format used here is only an intermediate way of transferring the state. In the ReadFrom  method we load bytes into a generic UserErrorReport that holds the serialized bytes and then calls XContentHelper.writeDirect to translate this serialized form into the required target format (yaml etc) whenever toXContent is called on it.