port the cache_device functions to golang
We have reached the limits of maintainability with the current implementation of the cache device.
Rather than continuing further down this path, let's re-implement what we have in golang before adding new features such as:
- #6 (closed): Take over unpartitioned space
- #10 (closed): Add a better cache device selection
- And more!