Don't assume all users have roles that are pushed in customforms helper.

Fixes #942
Editing Reports Helper test to match changes made in Pull request #872, related to #220
Revert "Optimize has_permissions check to only check superadmin access once"

This reverts commit 60e3a4b9f5f48d3bdde23dc16950f48823e33cfc.
Related to #948
Safer optimization for User_Model::has_permission() #948

* Avoids breaking tests
* Just caches the repeated query, not the permission check
Porting Requirements library #338
Convert existing frontend code to use Requirements library #338

* Convert Themes library to use requirements
* Convert register_themes.php to use requirements
* Convert plugin helper to use requirements
* Move theme js to use Requirements library
* Stop passing script tag in api_url config settings.
  Set url in settings and handle the actual tag through Requirements
* Fix path for file to stop it suffix'ing remote urls
Add theme inheritance and move theme css/js inclusion to theme library #338

* Rename style.css in other themes to avoid overriding default style.css #301
Render Requirements through Themes for frontend #338

This makes it easier to update old themes as they can still use header_block()
Clean up timeline on/off css/js #598

* Only include jqplot js+css if needed
* Remove inline css and use class instead
* Remove graph div when disabled
Fix openlayers imgpath now that Themes::$js_url isn't set #338
Rename rapidxwpr div class to wrapper - since thats what it is #550

* Fix other themes for renaming rapidxwpr to wrapper #550
Split CSS into other files from style.css

* Split style.css into base.css and style.css
* Tweak alerts radius map not to use .map class
  Use map-wrapper class instead as this avoids conflicts
  with div.map on main page. This Simplifies base.css so
  it doesn't need to style the map-wrapper too
* Move accordion styling to its own file
* Add basic style for reports submit and get alerts in base.css
* Remove some old unused CSS too
Switch themes to only include a limited set of CSS files by default #550

* Allow themes to specify addition css/js files to include in readme.txt
* Only include _default.css, style.css or THEMENAME.css by default
* Update existing themes to specify JS files
Make Requirements::themedCSS() work and allow themes to override more css #301

* Can now override openlayers.css and jquery-ui-themeroller.css
* themedCSS() will search for CSS in themes, then module (ie. plugin)
  then media/css
Move pngFix into global.js and remove runScheduler function #550

* pngFix can be run everywhere anyway.
* runScheduler was never being called
Add support for IE stylesheets to Requirements #338

* Move iehacks CSS into default theme
* Added Requirements::ieCSS() and Requirements::ieThemedCSS()
Share images between frontend and admin where possible #550

* Also removing some unused images
* Remove duplicate images
* Remove duplicate jquery.timeago JS in ci_cumulus theme
Convert admin to use Requirements and move admin requirements into Themes #338

* Also updates all admin controller to set XYZ_enabled in themes
* Add requirements at the last minute through views_pre_render event
* Pass api_url_all as an array of urls, for easier use with Requirements
* Make Requirements handle arrays of css or js files
* Move some admin js to media/js/admin.js instead of inline
Merge header css/feeds/js and admin_requirements into one function #338

* Start calling requirements from pre-render event for main controller too
* Backend and frontend requirements are enabled through a variable on
  Themes.
* Slider, timeline and hovertip are now enabled like other js libraries
  rather than always included or include based on $main_page
* Removes unused flot js and excanvas js
* Openlayers and jquery-ui-themeroller are no longer themedcss but included
  early so can be overridden via theme css files anyway.
* Move admin header/footer block render to pre render event
Add custom jquery ui and switch to using this #265

* Replace jquery.ui.min.js with version including accordion
  Previously only included features used in the admin.
* No longer using the google CDN for this as per #365
* Previously the admin used its own jquery UI, now both admin
  and frontend use the same version