test(benchmark): add test runner and stubs for bp.js

This commit adds a karma setup with a spec file for bp.js, and
has refactored bp.js to expose all functions on a global "bp" object.

Behavior of functions hasn't changed, other than to remove some
duplication of code regarding adding buttons to the DOM.
test(benchmark): add ability to run 25 iterations of test, sampling only the last 20

This commit also breaks the functionality into smaller, more testable functions,
and adds some basic tests for the benchmarking too.
feat(Scope): Use VmTurnZone.onScheduleMicrotask in Scope

BREAKING CHANGE:

Previously a micro task registered in flush phase would cause a new
digest cycle after the current digest cycle. The new behavior
will cause an error.

Closes #984
fix(scope): Use runAsync for microtasks in digest.

BREAKING CHANGE:

Microtasks scheduled in flush will process in current cycle, but they 
are not allowed to do model changes.

Microtasks scheduled in digest will be executed in digest, counting
towards the ScopeDigestTTL.
feat(benchmark): add ability to adjust sample quantity

Move creation of HTML elements into tree.html where possible.

Improve styling with bootstrap lib plus basic structuring of content.
feat(benchmark): record gc time for each test run
perf(ChangeDetector): lazy initialize DuplicateMap

This slightly reduces number of Maps in the system.
perf(ChangeDetector): create _EvalWatchRecord#namedArgs lazily

This change reduces the number of Maps in the heap on binding heavy views by 30%.
perf: use HashMaps instead of LinkedHashMaps where possible
feat(benchmark): change samples input type from range to text
feat(benchmark): improve sampling UI

 * Increase default sample from 10 to 20
 * Convert sample adjuster from range to input
 * Make sample list scrollable after 250px height
chore(benchmark): add underscorejs lib
feat(benchmark): add ability to profile memory usage per iteration
chore(benchmark): reduce code duplication with updateTimes()
chore(travis.yml): enable g3v1x, disable g3v1x-master
fix(scope): remove deprecation warning for scope.watch with context

This was added in e8a5ce734b00fd22f700e2fc1be5507dda195638.
We will be looking into this some more.
chore(benchmark): remove test for generateReportPartial
feat(benchmark): add statistical functions to calculate confidence interval
feat(benchmark): add confidence and stability info to averages
feat(benchmark): calculate relative margin of error and simplify report