Remove trailing whitespaces from some files
Add another SCGI parser test
Fix SafeLibev cancellation

Previously, cancelling a SafeLibev command doesn't work if
we're already within the command queue processing loop.
Introduce ServerKit, MemoryKit and some new data structures

This is in preparation for future optimizations and refactorings.
Begin integrating ServerKit into RequestHandler
Continue working on ServerKit.
Reduce number of reference count manipulations in FileBufferedChannel
Update Channel documentation
Add a faster way to detect whether we're on the event loop thread, using thread-local variables
Optimization: use boost::container::vector instead of std::vector in ApplicationPool2 for post lock actions

The Boost version does not allocate memory in its default constructor.
Optimize the priority queue in ApplicationPool2.

Replace the fibonacci heap with a d-ary heap. The former is an in-place data
structure that's backed by a vector, and thus has great CPU caching behavior.
This makes it perform better than a fibonacci heap despite worse algorithmic complexity.
Temporarily remove travis.yml
Remove mutex from FileChangeChecker and CachedFileStat. We don't need them to be thread-safe
Optimize ApplicationPool2 GetCallback

Use a simple struct functor instead of boost::function.
This is much faster.
Optimize ApplicationPool2 needsRestart()

Apparently CachedFileStat and FileChangeChecker are slow.
Fix pushWaiter() in ApplicationPool2

It may not call the callback inside the lock
Use raw system calls instead of OXT wrappers

This reduces the number of atomic operations
Replace weak pointers in ApplicationPool2 data structures with normal pointers

Weak pointers aren't necessary anyway because containing objects outlive
children objects. Using normal pointers reduces the number of reference count
changes.
Session object pooling
Optimize Options: use initializer list in constructor