remove Indexer argument from Deflector methods

instead inject the indexer and use that
simplify a few deflector methods
remove Indexer class

inject specific classes for dealing with various elasticsearch features directly instead of accessing them via the indexer object

this can still throw exceptions for periodicals if the client node is not connected yet during startup, those are harmless but annoying. will be removed in the future
Merge branch 'master' into retention

Conflicts:
    graylog2-server/src/main/java/org/graylog2/indexer/Indexer.java
    graylog2-server/src/main/java/org/graylog2/indexer/indices/Indices.java

manually added changes from 28cdde981ce96892882158b7848eb2c792648fb0 to Indexer.java to EsNodeProvider.java
remove obsolete factory interfaces
add rotation strategies beyond the simple message count deflector cycling strategy

a simple size based strategy is included, but its usefulness is limited due to fluctuations related to segment merges

related to issue #580
fixes #339
updated license headers, removed unused, wrongly merged file
fixing merge mistakes

graylog2 index prefix should not include separator
@Inject annotation missing
check cluster connectivity before attempting to run retention thread