Refactor extra::sync, and extra::arc

This is a really big pull request for me so I probable got stuff wrong (also concurrency is really really really difficult.) Because I'm so uncertain about if this is pull request is correct I really want other people to look over it, and second guess it.

Convert functionality into RAII style.

Split functionality up into the modules.

Cleanup dependencies, and redundancies.