static: Add an embedded static subsite

This commit adds just the subsite itself.  The subsite
works by running a list of generaters at compile time.
The entries produced by the generators are converted into
wai-app-static.WaiAppStatic.Storage.Embedded entries.  Also,
addStaticContent is supported via an IORef.  When a widget
produces static content (css, javascript), it is stuck into
the IORef inside the embedded static subsite.  The embedded
static subsite will then serve it from the IORef, properly
using a 304 response if the client already has the content.
static: add several embedded generators

This constains the generators to embed files, directories,
and javascript compression
static: update sample-embed.hs and point the old embedded static to the new one
static: fix the build on GHC 7.4

There were two build issues on GHC 7.4: using atomicModifyIORef'
and ByteString.Lazy.toStrict, both of which were missing.  These
are now fixed.

In addition, looking at the IORef code more closely,
we want the quite a bit of strictness in the IORef.
The common case is that the widget content already exists in the map
(every reload of a page will call embedStaticContent), but until we
force the map the thunks holding the duplicated generated content will
be kept around, leaking memory.  This will be the common situation since
the vast majority of the time the content already exists.  Since
the containers module does not have a strict map until 0.5, use
unordered containers which does have a strict map.
Merge pull request #600 from wuzzeb/embedded-static

Embedded static
static: make Entry a setting type

In the future we might want to add new features to the
Entry.  I am currently thinking about source maps, where
a new field will need to be added to the Entry.  Therefore,
use Data.Default to make sure we don't need to bump the
major version for these features.
Merge pull request #601 from wuzzeb/data-default

static: make Entry a setting type
Add checkboxesField{,List} fields (based on multiSelectField{,List})

squashed:
    - Attrs are applied to checkboxes in checkBoxField
    - Fix checkboxesField{,List} attrs are applied to input instead of span
    - Fix checkboxesField{,List} attribute checked
Add missing exports for checkboxesField{,List}
Simplify in checkboxesField{,List}: no intermediate selOpts list
Merge pull request #603 from axel-angel/checkboxesField

Add checkboxesField{,List} fields (based on multiSelectField{,List})
cereal 0.4 fpco/stackage#121
Update Socks dependency to fix build error
Merge pull request #608 from AaronFriel/master

Update Socks dependency to fix build error