Fix #6128 and #8150

Request Type: bug

How to reproduce: it('should not double quote dates', function() {
        $httpBackend.expect('GET', '/url?date=2014-07-15T17:30:00.000Z').respond('');
        $http({url: '/url', params: {date:new Date('2014-07-15T17:30:00.000Z')}, method: 'GET'});
      })

Currently, datetimes passed into $http.get params are wrapped in double quotes and then escaped giving urls like this: /url?date=%222014-07-15T17:30:00.000Z%22

Component(s): $http

Impact: large

Complexity: small

This issue is related to: 

**Detailed Description:**



**Other Comments:**

See comments on #6128, #8150
Hi @IgorMinar , thanks for taking the time to review this PR.
As per my comments in issue #8150, I had initially taken the approach of special casing date as per below:
```javascript
forEach(value, function(v) {
              if (v instanceof Date){
                  v = v.toISOString(); //toISOString() only supported in IE8 and above
              }
              else if (isObject(v)) {
                v = toJson(v);
              }
              parts.push(encodeUriQuery(key) + '=' +
                         encodeUriQuery(v));
            });
```

I then came across a similar older issue #6128 and I then thought that perhaps the .toJSON method would be a more robust approach.

>Are there other scenarios besides dates where toJSON doesn't do the right thing?

I don't actually know of any scenarios, so I'd be happy to revert to the isDate approach.