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.