In fact, Karabiner can map caps lock to both control (if you use it with another key) and escape (if you just press it). Which is fantastic.
https://github.com/tekezo/Karabiner-Elements/pull/247
You could build from the latest update and get that functionality.