Modify usage of throw in translations and add API wrappers.

* Wrapped `throw(unset)` in API function `cuttlefish:unset/0`.
* Added the `throw({invalid, Reason})` protocol with wrapper function
  `cuttlefish:invalid/1`. This is used for translations that wish to
  convey that a configuration is invalid when discovered after the
  validation phase.
* Changed the `throw(not_found)` from `cuttlefish:conf_get/2` into a tuple
  of `{not_found, Variable}`. This allows translations to call `conf_get`
  for settings that are expected to be present and a useful message
  about which setting was requested can be included in the error.