Allow any alias to be used for external modules

Previous to 2.27.0, browserify required external module ids to resolve
to a filepath. That's no longer the case, which means that grunt-browserify
can now make the aliasing / externaling process much more
straightforward. See the updated examples for how to implement.
Check to make sure an external is actually a file

…and add some comments around the nested logic