replace json parsers with JrJackson and Oj

I did benchmarks for both a *typical* event json document of 1.3Kb and a huge 45Kb document for our big documents use cases.

1.3Kb json doc: from ~16k/sec to ~30k/sec
45Kb json doc : from 850/sec to ~3.5k/sec

my bechmark is using a generator input config
```ruby
input {
  generator {
    message => "stdin"
    count => 500000
    codec => json
  }
}
output {
  stdout {
    codec => dots
  }
}
```
and TPS measured using
```sh
cat file.json | (sleep 10; cat -) |  bin/logstash -f bench.conf | pv -Wbar > /dev/null
```

Here are the changes summary:
- new `LogStash::Json` class as abstraction for everything json
- new `LogStash::Timestamp` class to solve a Ruby Time + JrJackson serialization problem and cleanup everything timestamp related
- refactored/cleanedup `LogStash::Inputs::Elasticsearch` input and added a basic spec
Good question!

This specifically was for users doing weird things like parsing a full logstash-json event with the json filter instead of using a codec. In this case, doing JSON.parse() with @timestamp, with a valid iso8601 timestamp string. So if someone uses json filter (correctly) but this would end up with @timestamp being a string, not a Time instance, which would break many things.

Previously, it was unexpected to have @timestamp be input at "filter" time, so now we hack it so that if you assign to @timestamp in json filter, we try to parse it.