Back to square one
Got Gradle working with Java8, Karyon 2.1.00-RC2
Added building blocks of Zuul
* Filters have 3 concrete impls (PreFilter, RouteFilter, PostFilter), each of which implement the state monad
* Req/Resps are explicitly modelled
Added FilterProcessor which applies all filters of a given type in sequence
Wired in FilterStore interface and abstracted more of Filter interface
Fixed Licenses
Attached Zuul models of Request/Response to RxNetty models and started unit testing the filter chain wiring
Added some sample Java filters that do nothign but route to api.test.netflix.com.

Not working yet, though.

When I do a response.close(true), I see headers get flushed to my final HttpResponse.

I also see the following warning:
Aug 12, 2014 9:40:01 PM io.netty.channel.ChannelOutboundBuffer safeSuccess
WARNING: Failed to mark a promise as success because it is done already: DefaultChannelPromise@182f75f2(failure(io.netty.handler.codec.EncoderException: io.netty.util.IllegalReferenceCountException: refCnt: 0, decrement: 1)
Making sure to retain the ByteBuf once we've using it outside the RxNetty callback.  This allows a basic proxy to api.test.netflix.com to work
Removing some bookkeeping printlns
Handle the case when an IngressResponse has no content (HttpClientResponse<ByteBuf> has Content-Length 0 header)
Modeling IngressResponse to have Observable<ByteBuf>, not a single ByteBuf
Adding unit tests of FilterProcessor
Moved writing of the ByteBuf to RxNetty HttpServerResponse until after the filters
Updated Gradle in wrapper to 1.12 and cleaned up NettyHttpServer
Correctly configuring RouteFilter to pass along built-up HTTP request
Got first pass at error-handling wired up
Fixing FilterProcessor by replacing usage of OP.single() with Observable.error(ERROR).startWith(OP).take(1)

* This is necessary so we eagerly propagate the onNext'ed HTTP content, rather than waiting for onCompleted (as in single())
* If we hold it up, then Netty might clear it away first
Mostly-empty zuul-groovy project
Added ClassPathFileFilter to populate filter store from classpath