How does a double spend get resolved when two miners find conflicting blocks at the same time?
Blocks form a chain; each block contains a prev field containing the hash of the block that "precedes" it.  The two blocks Ma and Mb are incompatible (the block chain is not allowed to contain two conflicting transactions), so neither can precede the other.  Hence they must be a "fork"; two different blocks with the same common ancestor.  All other miners will have to decide which fork they want to mine on; e.g. whether they want to create a block whose prev field points to Ma or Mb's block.  It doesn't really matter in this case. 

Say the next block is found by Mc and points to the Ma block.  Then the chain ending in Mc is longer, and the next miner will prefer to mine on that side of the fork.    After a few more iterations, it should be clear that the chain including Ma (which has transaction Ta) is longer, and will be preferred by miners from then on.  This means transaction Tb is now dead.  (Moreover, Mb doesn't get to collect their 12.5 BTC block reward, because the block that awards it only exists on a side chain which is dead.)