Implement streaming via Reactive Streams API:

- Add a streaming type parameter to Action which is either NoStream
  or Streaming[+T] with an element type T.

- Return the proper streaming types for collection-valued queries.

- Remove `synchronized` blocks for synchronous action contexts.
  Enforcing a happens-before relationship through volatile reads and
  writes should be enough.

- Add dependencies for Reactive Streams to the build.

- Add TestNG and related dependencies required for running the Reactive
  Streams TCK to the build.

Tests in ActionTest.testStreaming and reactive-streams-tests.