Nested QS Parser
From: Parted, Copyright (c) 2011-2012, Christopher Jeffrey
https://github.com/chjj/parted
function parse(str, del, eq) {
    if (!str) return {};

    var out = {}
      , s = str.split(del || '&')
      , l = s.length
      , i = 0
      , $;

    for (; i < l; i++) {
      $ = s[i].split(eq || '=');
      if ($[0]) {
        $[0] = unescape($[0]);
        $[1] = $[1] ? unescape($[1]) : '';
        parse.set(out, $[0], $[1]);
      }
    }

    return out;
  }