Bug 1044162 - part 0a - make additions to EXTRA_JS_MODULES use += instead of =; r=mshal

Straight assignments to HierarchicalStringList, which we'll change
EXTRA_JS_MODULES to in a later patch, don't work.  This change, in
addition to making things work as expected later on, also is more
consistent with existing practice.
Bug 1044162 - part 0b - add __{get,set}item__ to HierarchicalStringList; r=mshal

I am slightly surprised that we haven't needed this before, but the
motivating idea behind this is wanting to do:

VARIABLE.with.some["non-pythonic-identifier"] += ...

It seems unfortunate that the behavior is completely overridden by
subclasses, but I don't see a good way around that.
Bug 1044162 - part 0c - add a way to recurse over the 'directory' elements of a hierarchy; r=mshal

We're going to build on top of INSTALL_TARGETS for the next patch, and
it's easiest to do so if we can look at the 'directories' in the
hierarchy, rather than the individual strings.
Bug 1044162 - part 1 - make EXTRA_{PP_,}JS_MODULES communicate their installation path; r=mshal

This patch makes EXTRA_{PP_,}JS_MODULES similar in functionality to
TESTING_JS_MODULES: we indicate the path relative to
$(FINAL_TARGET)/modules with an appropriate hierarchy of paths.
Bug 1044162 - part 2 - remove JS_MODULES_PATH from the build system; r=mshal