Browserify v3

Update various dev dependencies and build process.
- Some basic browserify dependent module substitutions such as
  coffeeify for caching-coffeeify.
- Reworked plugin loader into a browserify plugin. This can probably
  be evolved further to a nice pattern for namespace plugins to
  browserify from the CLI. Maybe a separate module. The reason it had
  to be in this change is that watchify with browserify v3 tries errors
  dealing with the stream input, which makes sense.
- Fixes build warnings with watchify
Log pack failures during build
Support inter-plugin dependencies
enable node v0.10 in travis
Clean up .gitignore

Moving subdirectory gitignores in here makes it possible for tools that
use gitignore files (like ag[1]) to ignore those directories when
searching through the code.

[1]: https://github.com/ggreer/the_silver_searcher
preamble: Don't double-dev things.

When the version in package.json is X.Y.Z-dev, we were generating
version strings like X.Y.Z-dev-dev-abcdef123
Clean up stray comment characters
Make push_next tool use awscli
[WIP] Reincorporate bookmarklet build

This commit adds back the configuration needed to build the bookmarklet.
I've moved the bookmarklet from contrib/ to src/ -- if it isn't going to
have its own build process it probably shouldn't live in another
location (especially if that makes the build scripts more convoluted).

This is a work in progress. I have tried to preserve the original tests
for the functionality of the bootstrapper, but they are broken at the
moment. It might be easiest to test with a mock "window" object.
Remove redundant build writes

I can't recall exactly what I was doing here, but I think there was
an iteration of the browserify branch where I was attempting to write
all the plugins out as annotator-full was bundled. This is not needed
and rather confusing. The plugin builds take care of themselves. With
the inclusion of dependencies from node_modules, like the standalone
backbone components, this was causing those files to be written over
and the changed mtime was causing annotator and annotator-full to
appear out of date to make when the other was built.
Remove unnecessary bookmarklet build stuffs
Fix the bookmarklet tests

Some updates, migrations, changes:
- Use mocha, sinon, and chai
- Don't try to re-require, since modules are cached. Instead, just
require the bookmarklet once and take care of mocks and stubs to
make it re-usable.
- Kill support for having jQuery already loaded. That's nonsense and
`jQuery.sub()` has been removed in recent jQuery anyway. Just load it
always and use `noConflict()`.
- Change permissions -> annotateItPermissions where applicable
- The `<plugin>Options()` methods return the options object passed in,
not the one resulting from the plugin initialization. Therefore, don't
check for the class defaults to exist, such as `userId` on the
AnnotateItPermissions options.
Mock bookmarklet load more aggressively

Rather than trying to actually mock and test adding a script to the
DOM to load jQuery and annotator, just skip testing that bit and
mock `jQuery.getScript()` and the style modifications applied to the
head tag.
Remove redundant Make targets and includes

The dependency generation step in the main pkg/%.js rule has a sed
line that ensures the generated .d files are structured as rules
such that each only applies to the source files it strictly depends
on. As such, there's no need for a more complicated include at the
end than $(DEPDIR)/*.d to catch everything.

Also, the bootstrap script is caught by this because the bookmarklet
target depends on pkg/bootstrap.js.
Merge pull request #320 from okfn/bookmarklet-build

Reincorporate bookmarklet build
Merge remote-tracking branch 'upstream/master'