Add `functionality` concept and `nixops` funcitonality impl