Some simplification of client input forwarding:

- Introduced TextStream interface to represent a stream of text, possibly produced asynchronously.
- Changed InputForwarder to use this
- Removed lifecycle management from DaemonClientInputForwarder as it is also provided by InputForwarder.
Changed LoggingBackedStyledTextOutput to extend AbstractLineChoppingStyledTextOutput instead of using LineBufferingOutputStream, to avoid encoding and decoding to bytes.
Changed LineBufferingOutputStream to push text to a TextStream instance rather than an Action<String>.
Removed unused type.
Inject some stuff into TaskNameResolvingBuildConfigurationAction instead of pulling from Gradle instance.
Added type param.
Some spec updates.