[BUGFIX] Apply CSS attribute names regardles of case, outputting lowercase attributes and selectors

\#myID P { margin: 0px; } was not being applied correctly from style block
p { MARGIN: 0PX; } was not being applied correctly from style block
all inlined css from passed in css and parsed out <style> blocks is now lowercase

[BUGFIX]Prevent incorrectly capitalized CSS selectors from being stripped

Some wysiwyg editors seem to generate terrible CSS such as:
P {
    PADDING: 0PX;
    MARGIN: 0PX;
}
which due to the capitalized P was not being applied inline.

[BUGFIX] Apply CSS attribute names regardles of case, outputting lowercase attributes and selectors

p { MARGIN: 0PX; } was not being applied correctly from style block
all inlined css from passed in css and parsed out <style> blocks is now lowercase

Prevent incorrectly capitalized CSS selectors from being stripped

Some wysiwyg editors seem to generate terrible CSS such as:
P {
    PADDING: 0PX;
    MARGIN: 0PX;
}
which due to the capitalized P was not being applied inline.

fix my dumb

replace deprecated preg_replace /e with preg_replace_callback to pass php 5.6 travis tests

fix my dumb

replace deprecated preg_replace /e with preg_replace_callback to pass php 5.6 travis tests

Change undercase behavior to not change the case of the vss attribute value.  Font names, content property (http://www.w3schools.com/cssref/pr_gen_content.asp) should be left alone.
This fix exposes an inconsistency in the output CSS.  Now all code paths output the css with no spacing around the : or ; which is breaking approx 25 unit tests that will be updated for the next commit.

update the unit tests to expect no spaces in all resulting CSS instead of the mixed ouput based on what code path created it.
update the regex to not skip when uppercase chars were present, added todo for possibly removing preg_match for less expensive explode.
removed a few extra var_dumps I had left behind

ran the .travis stuff manually to verify formatting / unit tests / lint and fixed formatting a bit, removed TODO but left comment in order to avoid generating a warning
remove trailing space in a comment
provide ability to override encoding types
add failing unit tests before feature
Merge branch 'master' into chooseEncoding
Update preserve encoding to not strip out non breaking spaces (&nbsp;) which
are commonly used as a workaround for email clients that strip out or rewrite
various CSS and HTML.
Added methods to override default source/result encoding and unit tests to verify expected
behaviour with various chars.