refactor config

split default themes and custom themes to allow for updating the
default themes in future versions.

made all property access and modification use getters and setters
to decouple the api from the internal representation.
I forgot this is java*script*
finishing up config refactor
percolate config changes and fix bugs