UP-3940 Skin applies dynamically based on portlet preferences

Please review for suggestions on approach and simplicity.  LESS compilation phase takes 5 - 10 seconds and on a highly parallel multi-tenant environment I wanted to insure:
1) thread safety
2) allow multiple CSS compilations to occur simultaneously for different tenants.  Want minimal serial execution; e.g. if a new uPortal war is deployed so no custom skin CSS files exist and 10 tenants hit uPortal at around the same time, I didn't want the last one to have to wait 10 x 10 seconds for their CSS file to be built
3) currently the render method is invoked on every page render (portlet render caching doesn't appear to get cleared in config mode so don't currently use portlet render caching - see UP-3986), so I want to insure render is as efficient as reasonable with minimal trips to disk or external systems.
4) If no preference values are different than those from less variables file, just use defaultSkin.css created by build process.
5) Failures, such as an error in a less file, don't take down uPortal for all users trying to repeatedly handle heavy less build process.

Idea is each tenant would have their own skin manager instance and therefore their own preferences.  Preference values stored in config mode so apply to all users who are part of that same tenant.  All custom skin files are created from defaultSkin and stored in the same directory as defaultSkin.css.  Use same less compiler and less javascript compiler as maven build process.