[WIP] Elasticsearch

- [x] Basic insert/update/delete
- [x] simple find and get
- [x] relational queries
- [x] consider renaming `primaryKey` to `id`
- [x] Cleanup Query interface
- [x] Cleanup Command interface
- [x] finish querybuilder (add actual search abstraction)
- [x] mget in ActiveRecord
- [x] storing and finding by null values
- [x] Http library - guzzle? selfmade? https://github.com/DaSourcerer/yii/compare/313-CHttpClient-ng#diff-2bfa7c7deb191ae11ad878c3306ebd92R1 ?
- [x] logging

Documentation is here: https://github.com/yiisoft/yii2/tree/elasticsearch/extensions/elasticsearch#readme

```php
class Customer extends ActiveRecord
{
	public static function attributes()
	{
		return ['name', 'email', 'address', 'status'];
	}

	public function getOrders()
	{
		return $this->hasMany('Order', array('customer_id' => 'id'))->orderBy('id');
	}

	public static function active($query)
	{
		$query->andWhere(array('status' => 1));
	}
}
```
Elasticsearch separates primary key from attributes.
```php
$customer = new Customer();
$customer->primaryKey = 1;
$customer->attributes = ['name' => 'test'];
$customer->save();

$customer = Customer::get(1); // find by pk
$customer = Customer::find()->where(['name' => 'test']); // find by query
```