Another tweak - doesn't Travis-CI's npm/node like ^?
Update NPM before running Travis CI tests.  This should mean that ^ semvers in package.json (all the way down the tree) work.  See https://github.com/npm/npm/issues/4849 and https://github.com/SonicHedgehog/grunt-node-gyp/commit/f98da6368eed01d316b02034071589dcdfa8bb50.
This is getting messy - apologies.  Add npm update to the correct part of travis.yml.
Use before_install, like https://github.com/jashkenas/underscore/commit/4de07c008e53f2d4d8411fc315662496e80a8ea1
Tweak according to http://tech.vg.no/2014/05/30/npm-travis-node-and-the-caret-operator/
Revert package.json to use caret operater for pulling in mocha, now that it works.  Add note in README.md to advise users about npm limitations.