If you click on Contracts -> "The DAO", it should show you that "The DAO" has a token balance of 110 Ð.
This token balance is associated with the "The DAO" 0xBB9bc244D798123fDe783fCc1C72d3Bb8C189413 account and Ethereum Wallet has added this amount to your total balance.
3,591.5 + 110 = 3,701.5 .
I have not been able to find a definitive source explaining the additional tokens associated with the 0xBB9bc244D798123fDe783fCc1C72d3Bb8C189413 account, but from https://forum.daohub.org/t/help-why-i-have-more-dao-than-i-actually-bought/1560/2:
It's all correct. Those are your accounts 7.6k tokens and the token contract address owns 100 tokens (someone used the proxy function with 1 eth to make the DAO buy itself 100 tokens - no idea why). The main contract address screen won't show your tokens, it'll show the tokens of that adress. But when you watch you'll see the sum total of all accounts you're tracking hence 7.7k
This 110 Ð was 100 Ð a few days ago. Someone must have added another 0.1 ETH by the proxy function.
EDIT 16/05/2016 - Following on from team member @tayvano's answer.
Tokens Assigned To Sender's Address
When you send ethers to TheDAO the normal way, the default function within the DAO contract will call the createTokenProxy() function with the senders address.
// The DAO contract itself contract DAO is DAOInterface, Token, TokenCreation { ... function () returns (bool success) { if (now < closingTime + creationGracePeriod && msg.sender != address(extraBalance)) return createTokenProxy(msg.sender); else return receiveEther(); } ...
Tokens Assigned To Specified Address
If you instead call createTokenProxy() with an address other than the message sender's, the TheDAO token will be assigned to the specified address.
Here is the TokenCreationInterface interface with the comment explaining how a different address can be specified as the token owner:
contract TokenCreationInterface { ... /// @notice Create Token with `_tokenHolder` as the initial owner of the Token /// @param _tokenHolder The address of the Tokens's recipient /// @return Whether the token creation was successful function createTokenProxy(address _tokenHolder) returns (bool success); ...
And here is the implementation of createTokenProxy(_tokenHolder) with the statement balances[_tokenHolder] += token;:
contract TokenCreation is TokenCreationInterface, Token { ... function createTokenProxy(address _tokenHolder) returns (bool success) { if (now < closingTime && msg.value > 0 && (privateCreation == 0 || privateCreation == msg.sender)) { uint token = (msg.value * 20) / divisor(); extraBalance.call.value(msg.value - token)(); balances[_tokenHolder] += token; totalSupply += token; ... return true; } throw; } ...
As noted by @Tjaden, the extra data that is sent with the transaction is a call to the function createTokenProxy() with the DAO's address that has probably created the extra 110 tokens.
And it is still 110 tokens. From The DAO - Creation: 
Example Of createTokenProxy() Usage
By chance I was looking at the following transaction 0xfb2d580342988f20c9bd4b756555d6139f55ab2e5df2c5f99886c6195221faee in my answer to What is the address and balance of The DAO's extraBalance account: 
The transaction is from the Poloniex wallet and includes the extra data 0xbaac530000000000000000000000000003f59b7e25819a64fc2f7199e89457593fe3500d.
I entered the following command in geth to find that the first 4 bytes of the sha3() of the function createTokenProxy() matches the first part of the extra data, which is how functions are called in transactions.
> web3.sha3('createTokenProxy(address)').substr(0, 10) "0xbaac5300"
Poloniex is using this function call when individuals purchase The DAO tokens via the Poloniex - Create DAO Token screen.