core: Allow compiler optimizations by using a local var in for-in loops

Found this problem when testing function optimizations using Node.js, so this definitely
applies to V8 and may also apply to other JavaScript runtime compilers.
core: Firebolt.extend() performance and functionality changes

+ Allowing Firebolt.extend() to be optimized by not leaking the arguments object
+ When called with only one input object, only the NodeCollection prototype is extended
+ Now also allowing the NodeCollection prototype to be deep extended when called with true and an object
core: Optimize the private sanitizeCssPropName() function

HTMLElement#css() wasn't being optimized because of a problem with sanitizeCssPropName() which caused
that function to be deoptimized. This commit fixes that problem so now both sanitizeCssPropName() and
HTMLElement#css() are optimized and it also improves the minified and gzippped file size.
core: Improve functionality, performance, and code for HTMLElement#toggleClass()

Now using an algorithm that builds the new class name by finding the symmetric difference between the element's
current class names and the names to toggle. The algorithm assumes that the names to toggle are all unique.
The function now also handles the case where the element's class has duplicate class names.
core: Removed unnecessary `else`
core: Made HTMLElement#removeClass() look more like toggleClass() for better compression