Mixing services aren't a solution, they are centralized and they keep logs, plus it's annoying as it gets to have to send your funds somewhere, then get them back, then buy or pay whatever. It should be just a single click like a regular transaction, otherwise it's a waste of time.
This is a good idea. DASH has this functionality already. The funds are pre-mixed at any time prior to sending.
https://dashtalk.org/Yes, it should be part of the protocol itself. DASH does this right now. In the wallet you can choose to send funds "anonymously" or "non-anonymously" with a single click. The mixing is facilitated by the full nodes, so there is no need for a 3rd party mixing service.