feat(mocks): change MockHttpBackend to define the assertion on flush.

Add new methods (`flushGET`, `flushPOST`, etc) to the `MockHttpBackend` class to allow defining assertions on flush. These methods add a new expectation and then flush all the pending requests until they find the one matching the expectation.

BREAKING CHANGE:

Unexpected requests are detected only when `flush` is called.

Before:

		backend("GET", /some"); //throws here if `/some` has not been defined

After:

		backend("GET", /some"); //no problem, just records the request
		backend.flush(); //throws here

Closes #900
refactor(tests): change tests to use flushGET instead of expectGET

Closes #1433
chore: git ignore /.pub
fix(components): the content tag duplicates elements

Closes #1422
feat(ChangeDetector): unified architecture
Plug the new cd architecture into angular