*
@method Object.fromQueryString(<str>, [deep] = true)
@returns Object
@short Converts the query string of a URL into an object.
@extra If [deep] is %false%, conversion will only accept shallow params (ie. no object or arrays with %[]% syntax) as these are not universally supported.
@example

Object.fromQueryString('foo=bar&broken=wear') -> { foo: 'bar', broken: 'wear' }
Object.fromQueryString('foo[]=1&foo[]=2')     -> { foo: [1,2] }

*
function(str, deep) {
      var result = object.extended(), split;
      str = str && str.toString ? str.toString() : '';
      str.replace(/^.*?\?/, '').split('&').forEach(function(p) {
        var split = p.split('=');
        if(split.length !== 2) return;
        setParamsObject(result, split[0], decodeURIComponent(split[1]), deep);
      });
      return result;
    }