***UPDATE:***

Turns out the issue was caused not by testnet, but by having 2 wallets @ryanofsky found out !

----------

Step to reproduce:

This work on regtest just fine:
```
bitcoind -wallet=test -regtest -rpcpassword=abc -rpcuser=abc
```

Try to make a batch RPC request to /wallet/test:

```
[{"jsonrpc":"1.0","id":1,"method":"getbalance","params":["*"]}]
```
You get the expected result.

However; same things with testnet:
```
bitcoind -wallet=test -testnet -rpcpassword=abc -rpcuser=abc
```

Result:

"Wallet file not specified (must request wallet RPC through /wallet/<filename> uri-path)."

This problem is limited to batched RPC request on testnet as just making the exact same request without the '[' and ']' works fine. It works also fine on regtest, which is crazy. I will look into later.
{
    std::vector<std::string> commandList;
    typedef std::map<std::string, const CRPCCommand*> commandMap;
    std::transform( mapCommands.begin(), mapCommands.end(),
                   std::back_inserter(commandList),
                   boost::bind(&commandMap::value_type::first,_1) );
    return commandList;
}
std::string HelpExampleCli(const std::string& methodname, const std::string& args)
{
    return "> bitcoin-cli " + methodname + " " + args + "\n";
}
std::string HelpExampleRpc(const std::string& methodname, const std::string& args)
{
    return "> curl --user myusername --data-binary '{\"jsonrpc\": \"1.0\", \"id\":\"curltest\", "
        "\"method\": \"" + methodname + "\", \"params\": [" + args + "] }' -H 'content-type: text/plain;' http://127.0.0.1:8332/\n";
}
void RPCSetTimerInterfaceIfUnset(RPCTimerInterface *iface)