fix($resource): params should expand array values properly

Today, calling e.g. var R = $resource('/Path/:a'); R.get({a: 'foo', bar: ['baz1', 'baz2']}); results in a query
string like "/Path/doh?bar=baz1,baz2" which is undesirable. This commit enhances resource to use
$http to encode any non-url parameters resulting in a query string like "/Path/doh?bar=baz1&bar=baz2".

BREAKING CHANGE: if the server relied on the buggy behavior then either the
backend should be fixed or a simple serialization of the array should be done
on the client before calling the resource service.
fix($http): do not encode special characters `@$:,` in params

encodeURIComponent is too aggressive and doesn't follow http://www.ietf.org/rfc/rfc3986.txt
with regards to the character set (pchar) allowed in path segments so we need
this test to make sure that we don't over-encode the params and break stuff
like buzz api which uses @self.

This is has already been fixed in `$resource`. This commit fixes it in a same way
for `$http` as well.

BREAKING CHANGE: $http does follow RFC3986 and does not encode special characters
like `$@,:` in params. If your application needs to encode these characters, encode
them manually, before sending the request.
docs(guide): fix some invalid javascript in directive documentation

Use double quotes to maintain consistency with other HTML
docs($q): fix a few typos
fix(ngSwitch): make ngSwitch compatible with controller BC module

add a $scope to the ngSwitch's controller to fool the controller
BC (backwards compatibility) module used by DFA.
docs($rootScope): rearrange event listener docs
docs($resource): fix bad indentation producing a code block
fix(*): don't use instanceof to detect arrays

this breaks when multiple javascript contexts are involved - like in node-webkit

see original PR: #1966

Closes #1966
style(filter): remove ws
fix(a): workaround IE bug affecting mailto urls

Apparently there is a really weird bug in IE6-8 that causes anchor textContent
to be reset with href content when both contain @ symbol.

Inserting a bogus comment node into all anchor elements in IE works around this
browser bug.

I'm fixing the issue via directive because that way we'll fix it for jQuery as
well.

I fixed an e2e test too because it was incorrect.

Closes #1949
fix($httpBackend): patch for Firefox bug w/ CORS and response headers

A workaround for https://bugzilla.mozilla.org/show_bug.cgi?id=608735
In FF getAllResponseHeaders() returns null if the request is the result of CORS.

Tried to format the code so that when a FF patch is released and gains enough
traction it can easily be selected and deleted. Heavily inspired by jQuery's
patch for the same bug. This patch falls short of passing through custom headers
but covers all of the "simple response headers" in the spec at
http://www.w3.org/TR/cors/

This commit should get reverted once Firefox 21 gets out.

Closes #1468
feat(ngSwitch): support multiple matches on ngSwitchWhen and ngSwitchDefault

Closes #1074
fix(compile): Interpolate @ locals before the link function runs

Do a one-off interpolation of @ locals to ensure that the link fn receives attributes that are already interpolated.
fix(compile): Initialize interpolated attributes before directive linking
feat(routeProvider): Add support to catch-all parameters in routes

This allows routeProvider to accept parameters that matches
substrings even when they contain slashes if they are prefixed
with an asterisk instead of a colon.
For example, routes like edit/color/:color/largecode/*largecode
will match with something like this
http://appdomain.com/edit/color/brown/largecode/code/with/slashs.