Feature/allow the use of metadata

- Allow to store Elasticsearch document information in the `@metadata` field or somewhere else.
- Allow the user to specify which fields to move,  the default is _index, _type, _id
- Change the default query to elasticsearch to  '{"query": { "match_all": {} } }' 
- Try to merge if the target field exist.

I took this https://github.com/elasticsearch/logstash/pull/1644  as the original starting point 
JSON is only valid in UTF-8, and I think if Elasticsearch accepts JSON that is not valid UTF-8, then we should fix that in ES. I haven't seen this happen.

We should be safe assuming that only valid json comes out of ES, and such that only UTF-8 strings (keys and string values) are present.

Given only json, and assuming utf-8, we shouldn't need codecs here. This will help us avoid performance penalty of hash -> json -> hash ;P