Mercury branch - all the changes and functionality we need to have Mercury skin working

DO NOT MERGE, THIS PR IS PART OF PROJECT MERCURY! 
There doesn't seem to be a need to create a new ParserOptions obj for each media. Maybe it could be a static variable?