Split core features in Core module

This PR is based to #1. It splits out the core and the front-end features of Yamazaki, so we can use it not only as executable but even in some other gems to fetch just data that have to be manipuleted.

I didn't test my changes so much, so I suggest you to do some tests before merging them. Also, we could think about implementing unit tests.