refactor lib/sinon to attach API to an object

due to circular dependencies, sinon needs to be defined on `exports`.
fake_xml_http_request needs sinon to exist

due to the call to sinon.extend, there's no point in declaring the sinon global if it doesn't already exist
return sinon from makeApi
explicit dependencies for fake_xml_http_request
explicit dependencies for event
explicit depenencies for fake_server
explicit dependencies for fake_server_with_clock
explicit dependencies for fake_timers
explicit dependencies for fake_xdomain_request
add event dependency for fake_xml_http_request
explicit dependencies for assert
explicit dependencies for behavior
explicit dependencies for call
explicit dependencies for collection
explicit dependencies for match
explicit dependencies for mock
explicit dependencies for sandbox
explicit dependencies for spy
explicit dependencies for stub
explicit dependencies for test