Font Icon setting, and setting infrastructure

Uses a setting to allow, disallow use of Font Icon.

This probably needs tweaked since the Font Icon is used anyway in
some places, and never used in other places. Possibly the option
should be "Use Font Icon for dropdowns" (or maybe that should always
be enforced.

But this is a start on the infrastructure needed for those decisions.

Tried to cut down on the needless repeition in Moodle theme settings
via some "convention over configuration" too.
add an inverse navbar option

All the swatches come with this option, plus it gives people a
minor headstart on creating either light or dark headers for
custom themes.

Some more changes to my settings infrastructure, as I was getting
some weird errors.

Wondering whether definining the helpers as anonymous functions
rather than importing the lib file might help.
Merge pull request #188 from ds125v/navbar_inverse

Navbar inverse
add customcss setting

The search and replace stuff could be simplified I think.
When you set up a setting you provide Moodle with a default setting,
yet most of the themes I see seem to check if its set and then
manually add this default value. Perhaps you can ask Moodle for it,
since it already knows what it is.
Merge pull request #189 from ds125v/customcss

add customcss setting
Replace $CFG->themedir with $CFG->dirroot . "/theme"
Update version due to new settings available
use Grunt to correct the glyphicon replace format

The CSS post_process step is too late to fix this, changing the
upstream code is bad practice, the current CSS overrule leaves a
broken font link in the CSS.

None of the solutions are particularly good, but since we're already
using grunt we might as well fix this with it too.
Merge pull request #191 from ds125v/glyphicon_replace

use Grunt to correct the glyphicon replace format
messaging improvements
Added button margins left and right back in
make the message send box look better, added margins
simple settings class

Put the stuff for simplifying theme settings in a class to keep it
tidy, particularly as Moodle suggests functions should all start
with the full themename.

Use __DIR__ for locating theme local files in requires.

Also, dropped the over fancy and frankly unnecessary use of an
anonymous function and array_map in the CSS setting swap code for
a simple foreach, as it is simpler, shorter and more readable.
Merge pull request #193 from ds125v/simple_settings

simple settings class
Style fatal errors better

To test try editing a URL to visit a section of the settings
that doesn't exist or a really high course id number. With
debug up full you see the debug info too.

Turns fatal errors into alert-dangers, and debug info into
pre.alert-infos.

The debug info just picks up on the (somewhat random) use of
notifytiny as a notification class. It also restyles it slightly
by rewriting the HTML, rather than add extra CSS just for debug
styles.

The fatal error stuff comes from deep within a scary renderer,
but by catching it in the box renderer I can divert it. This is an
interesting technique with possibiities for catching other stuff
that's either not in a renderer or in a really ugly renderer that
we'd rather not touch.
Merge pull request #194 from ds125v/nicer_errors

Style fatal errors better
add_numbered_textareas and Footerwidget example

The Footerwidget stuff is just to demonstrate the interface.

I think if separate desc instructions (or default values) are needed,
then that's probably a case where people should just add the
settings individually themselves.
Merge pull request #195 from ds125v/numbered_settings

add_numbered_textareas and Footerwidget example
pretty nav tabs for grade reports etc
Introducing the Reader buttons for large pages like the gradebook & incourse layouts