Enhanced windowing semantics: Introduces policy based windowing [Flink-1190]

This pull request contains implementations regarding the issue Flink-1190 which has the following description:

"The current windowing, batching options are rather strict: the stream is split into smaller units based on either count or time. This model is not flexible enough to e.g. describe the following semantics: provide the data from the last one second, but provide at most 1000 records.
The concept is based on IBM InfoSphere Stream's eviction and triggering policies, while giving the user the opportunity to define policies."

Included in this pull request is:
- A new invokable for policy based windowing
- Several policy implementation and the policy interfaces
- Helper classes and the API integration of the new features
- Helper classes and interfaces for the policy implementations, such as delta functions and extractors
- Test cases for all new functionalities
- Examples for the usage of policy based windowing
- Extension of the streaming guide with an high level description