Added two new Core classes - Database and Cache

Now, API request are sent via Cache class, uses cached content from the Database if the response hasn't expired, else reloads the content by placing a new HTTP request and saves it again. We can set different cache expirations according to our needs.

Also rewrote GeoIP and Currency class to use the new Caching feature.