Settings caching redux

New static properties of the **Setting** model created to contain the grouping of settings typically queried. New static functions for the **Setting** model also created for retrieving and caching queries.

Now when any page is queried for the first time all global page settings (and just the necessary ones) are cached forever. Other page settings are also queried and cached separately if it's the first time being requested. Otherwise all page settings are cached on a per needed basis. 

However, when admin user updates the General Settings in the CMS, all the separate caches for the general settings are cleared out, to then be *re-cached* once a page is requested and taking into account updated content.

Resolves #294

@angaither 

CC: @barryclark @DFurnes 
This is the way Laravel does `! empty()` throughout it's code, so I was following that standard...