BC break; use class filters instead of adapter filters in `Cache`.

This changes how the Cache class can be filtered. Instead of applying
filters to a single adapter (configuration) you must/can now filter the
Cache class' static methods directly.

This makes clear which filters are used when. I.e. when I read the docblock of
Cache::write() and see I can filter it, I'd exepct that I can directly filter
that method and not indirectly the adapter method.

This is an attempt to remove very granular filtering points and move them to a
higher level. It is assumed that filtering on adapter level is seldomly used.

You should update you code as per this example:

```
// OLD
Cache::config(array(
	'default' => array(
		'adapter' => 'File',
		'filters' => array(
			'write' => function($self, $params, $chain) {
				// ...
			}
		)
	)
));
```

```
// NEW
Cache::config(array(
	'default' => array(
		'adapter' => 'File'
	)
));

Cache::applyFilter('write', function($self, $params, $chain) {
	// ...
});
```
Merge pull request #1086 from davidpersson/cache-class-filters

BC break; use class filters instead of adapter filters in `Cache`.
Improve docblock of cache logger adapter.
Use Cache::PERSIST for max expiry in logger adapter.
Removing copy and paste docblock artifact.
Shorten expression.
Expanding docblock of headers().
Updating copyrights.
Merge pull request #1087 from rapzo/dev

Updating copyrights.
Fix examples in headers() docblock.
Do not return compiled headers when setting header; BC break.

A comparison against current master using the TechEmpower
JSON benchark shows:

- reduction of overall call count (previously 801, now 750)
- 1,120 bytes less max peak mem (now 2,746,952 bytes)

Where and when this breaks BC:

Headers cannot be set and get in one go anymore. Users must
now first set the headers than in another call get them.

Research showed that this features is rarely used (once throughout the core). Setting headers
happens in the very majority of cases. Most often headers are only get once to render the
message.

When headers are retrieved they must be formatted. As this happened on each set too (while the
result often not used) and the concerns (set vs. get) are different this made a good optimization
target.
Refactoring Message::headers().
Optimizing conditional check for performance.
Optimize HTTP header parsing.
Noting that action request normalizes headers.
Mini-refactor action request scheme assignment.
Optimize request configuration.
Adapting test; make cache not return headers (acc. to docblock).
Merge pull request #1089 from davidpersson/optimize-net

Optimizing net related classes
BC Break, fixes JSON encoding & decoding for empty results.