Always build response from request

Instead of building a response from scratch, start with the
new_response() method from Plack::Request and end with the finalize()
method.
Add a pair of local LRU caches

Add every set of returned results to one of two local caches. The
"precache" is for results that do not have a specified seed value, and
is expected to experience high churn. The "maincache" is for results
requested with a seed value, and should be more stable than the
precache.

Note: on a "proper" server, these caches shouldn't be necessary, as my
desktop can push over 200 req/s (dict.txt) without doing anything
special. A cheap VPS is a different story, though.