use epoll on linux
build uberjar to simplify distribution
initial file cache impl