First attempt of revisiting pagination with cache in place

This is really tricky, at least for me. GitHub supports pagination but
we need to cache them per page(?). And we only care about gists
with Markdown file, so how it takes into account of the page?

Implemented a function to continuously fetching GitHub and cache
for `page` requested * `@per_page` (set in `env`). The result is sliced
accordingly later on. However, still has not filtered for Markdown yet.
Use a separate cache for lists of gist per user

Instead of depending on the number of cached gists, which gives a lot
of headache when dealing with pagination, we now store the gists list
of a user in a separate cache.

On the first load, when cache does not exist, fetch ALL the gists from
the service by making request consequently with the maximum per
page allowed, which is 100. Then store all of them in the cache.
After that, we filter them for blog-like gists, and page them and return.

Also fixed a bug in which empty description is not an empty string, but
a `:null` value.