feat(intercept): implement basic plumbing for registering request/response interceptors

Based on discussion in #5
feat(objectToMap): add utility function to convert JS objects to maps
fix(Serialize): add support for all valid JSON values
chore(package): update zone and prophecy dependencies
feat(Map): update Http to make use of map generator
feat(intercept): add async support for intercept functions
chore(tests): remove forkZone() call from all Http specs
chore(JSONP): add no-op setRequestHeader to JSONPConnection to satisfy IConnection
refactor(QueryParams): change fullUrl and QueryParams to use template literal and Map
feat(Http): freeze globalInterceptors object on http
refactor(Http): destructure arguments for interceptor functions

Previously interceptor functions would be called with multiple arguments,
treating the interceptors more like callbacks than part of a promise chain.
This commit changes interceptors to expect a single object, and to resolve
or reject a single object.
feat(IInterceptResolution): define interface for interceptor resolution object
refactor(Http): simplify logic and improve readability of intercept method