Add support for fields parameter in get operation

Update the getDocument method to return the `fields` field instead of `_source` if available.
Allows to get a document from ES and specify the fields you want (See fields section at http://www.elasticsearch.org/guide/reference/api/get/)
Undo #407
Implemented upsert.
Updated upsert for bulk actions.
Updated bulk to support scripts directly.
Make Scripts first class citizens.
AbstractDocument should use setData() to support scripts and documents.
Added more methods to use scripts for updating in bulk.
AutoPopulate is not required for scipts.
Updated tests to work with changes.
Simplify AbstractDocument::create()'s type checking.
Updated and added some more tests.
Formatting.
Formatting.
Update changelog.
Updated type checking for AbstractDocument::create().
Bulk updates also support doc_as_upsert.
Added tests for bulk api using doc_as_upsert.
Optimize the index prior to testing the mapping.

Related to pull request https://github.com/ruflin/Elastica/pull/359
Added Common query