www: move to grunt 0.4

grunt 0.4 allows gruntfile to be in coffeescript directly
which makes the build script much more easy to understand
finish grunt0.4 move

- remove uneeded stuff (jslove, some comments)
- add unit test framework
- update the doc

Signed-off-by: Pierre Tardy <pierre.tardy@intel.com>
schedulers must call parent de/activate methods

# Please enter the commit message for your changes. Lines starting
# with '#' will be kept; you may remove them yourself if you want to.
# An empty message aborts the commit.
# Not currently on any branch.
# You are currently editing a commit while rebasing branch 'nine' on '924c5e3'.
#
# Changes to be committed:
#   (use "git reset HEAD^1 <file>..." to unstage)
#
#	modified:   master/buildbot/schedulers/base.py
#	modified:   master/buildbot/schedulers/basic.py
#	modified:   master/buildbot/schedulers/dependent.py
#	modified:   master/buildbot/schedulers/timed.py
#	modified:   master/buildbot/schedulers/trysched.py
#	modified:   master/buildbot/test/util/scheduler.py
#	modified:   master/docs/developer/schedulers.rst
#
don't assert on JSONRPC error message contents, which depend on JSON parser
Merge branch 'master' into nine

Conflicts:
	master/buildbot/process/builder.py
#
# It looks like you may be committing a merge.
# If this is not correct, please remove the file
#	.git/MERGE_HEAD
# and try again.

# Please enter the commit message for your changes. Lines starting
# with '#' will be kept; you may remove them yourself if you want to.
# An empty message aborts the commit.
# On branch nine
# All conflicts fixed but you are still merging.
#   (use "git commit" to conclude merge)
#
# Changes to be committed:
#
#	modified:   master/buildbot/buildslave/openstack.py
#	modified:   master/buildbot/changes/mail.py
#	modified:   master/buildbot/process/properties.py
#	modified:   master/buildbot/schedulers/basic.py
#	modified:   master/buildbot/schedulers/dependent.py
#	modified:   master/buildbot/schedulers/timed.py
#	modified:   master/buildbot/schedulers/trysched.py
#	modified:   master/buildbot/scripts/logwatcher.py
#	modified:   master/buildbot/status/build.py
#	modified:   master/buildbot/status/web/baseweb.py
#	modified:   master/buildbot/status/web/build.py
#	new file:   master/buildbot/status/web/files/exception_large.png
#	new file:   master/buildbot/status/web/files/exception_normal.png
#	new file:   master/buildbot/status/web/files/exception_small.png
#	new file:   master/buildbot/status/web/files/failure_large.png
#	new file:   master/buildbot/status/web/files/failure_normal.png
#	new file:   master/buildbot/status/web/files/failure_small.png
#	new file:   master/buildbot/status/web/files/readme_svg.txt
#	new file:   master/buildbot/status/web/files/retry_large.png
#	new file:   master/buildbot/status/web/files/retry_normal.png
#	new file:   master/buildbot/status/web/files/retry_small.png
#	new file:   master/buildbot/status/web/files/skipped_large.png
#	new file:   master/buildbot/status/web/files/skipped_normal.png
#	new file:   master/buildbot/status/web/files/skipped_small.png
#	new file:   master/buildbot/status/web/files/status.svg
#	new file:   master/buildbot/status/web/files/status_large.svg
#	new file:   master/buildbot/status/web/files/status_small.svg
#	new file:   master/buildbot/status/web/files/success_large.png
#	new file:   master/buildbot/status/web/files/success_normal.png
#	new file:   master/buildbot/status/web/files/success_small.png
#	new file:   master/buildbot/status/web/files/unknown_large.png
#	new file:   master/buildbot/status/web/files/unknown_normal.png
#	new file:   master/buildbot/status/web/files/unknown_small.png
#	new file:   master/buildbot/status/web/files/warnings_large.png
#	new file:   master/buildbot/status/web/files/warnings_normal.png
#	new file:   master/buildbot/status/web/files/warnings_small.png
#	modified:   master/buildbot/status/web/grid.py
#	new file:   master/buildbot/status/web/hooks/bitbucket.py
#	modified:   master/buildbot/status/web/hooks/github.py
#	new file:   master/buildbot/status/web/pngstatus.py
#	modified:   master/buildbot/status/web/status_json.py
#	modified:   master/buildbot/status/web/templates/forms.html
#	modified:   master/buildbot/steps/shell.py
#	modified:   master/buildbot/test/unit/test_schedulers_manager.py
#	new file:   master/buildbot/test/unit/test_status_web_change_hooks_bitbucket.py
#	modified:   master/buildbot/test/unit/test_status_web_change_hooks_github.py
#	new file:   master/buildbot/test/unit/test_status_web_png_resource.py
#	modified:   master/buildbot/test/unit/test_steps_shell.py
#	modified:   master/buildbot/test/unit/test_util_ComparableMixin.py
#	modified:   master/buildbot/test/util/change_import.py
#	modified:   master/buildbot/util/__init__.py
#	new file:   master/docs/_images/success_normal.png
#	modified:   master/docs/developer/cls-forcesched.rst
#	modified:   master/docs/developer/cls-iproperties.rst
#	modified:   master/docs/developer/cls-irenderable.rst
#	modified:   master/docs/developer/utils.rst
#	modified:   master/docs/manual/cfg-buildsteps.rst
#	modified:   master/docs/manual/cfg-changesources.rst
#	modified:   master/docs/manual/cfg-properties.rst
#	modified:   master/docs/manual/cfg-statustargets.rst
#	modified:   master/docs/relnotes/index.rst
#	modified:   master/setup.py
#	new file:   slave/buildslave/scripts/create_slave.py
#	new file:   slave/buildslave/scripts/restart.py
#	modified:   slave/buildslave/scripts/runner.py
#	renamed:    slave/buildslave/scripts/startup.py -> slave/buildslave/scripts/start.py
#	new file:   slave/buildslave/scripts/stop.py
#	new file:   slave/buildslave/scripts/upgrade_slave.py
#	modified:   slave/buildslave/test/test_extra_coverage.py
#	new file:   slave/buildslave/test/unit/test_scripts_restart.py
#	modified:   slave/buildslave/test/unit/test_scripts_runner.py
#	new file:   slave/buildslave/test/unit/test_scripts_start.py
#	new file:   slave/buildslave/test/unit/test_scripts_stop.py
#	new file:   slave/buildslave/test/unit/test_scripts_upgrade_slave.py
#	modified:   slave/buildslave/test/util/misc.py
#
ChangeSources: implement the resource type in terms of the new data interfaces

This is modelled fairly closely to the Schedulers changes.

I've gone through all the CS classes and:

 - add a 'name' parameter, and generate one if it's not explicitly set. These will be used to 'claim' the CS for a particular master, so it needs to be meaningful in all cases.
 - use activate/deactivate to start and stop the CS. Usually this means just changing startService/stopService to activate/deactivate
ChangeSourceData: Address review comments
Merge branch 'ChangeSourceData' of git://github.com/jaredgrubb/buildbot into nine
fix pyflakes
remove 3rd party js deps, and replace by bower package manager

bower is automatic front-end package manager downloader

This is first attempt at integrating it
Probably at some point, we figure out how to avoid the symlinks
Merge branch 'master' into nine
Merge branch 'master' into nine
Merge branch 'master' into nine
spell master correctly
fix pull requests comments

doc fixes
run grunt in setup.py develop

Signed-off-by: Pierre Tardy <pierre.tardy@intel.com>
generate the 3rd party version table automatically using bower description files

Signed-off-by: Pierre Tardy <pierre.tardy@intel.com>
put styles as bower components as well

Signed-off-by: Pierre Tardy <pierre.tardy@intel.com>
requiregen: autogenerate main.js

implement the base ordering that angular really needs, for the rest,
they are actually already handled by angularjs dependancy injection.

Signed-off-by: Pierre Tardy <pierre.tardy@intel.com>
support coffeescript sourceMap

This allows to debug the coffeescript directly in the browser

Signed-off-by: Pierre Tardy <pierre.tardy@intel.com>
Merge branch 'grunt0.4' of git://github.com/tardyp/buildbot into nine