validate resource keys at compile time

 - achieves two aims 1) since Liberator has an extensive set of possible
   keys, it is good to validate that keys are valid options to avoid
   confusing bugs when you mistype some keys. 2) option map merging can
   be done at compile time, thus saving some cycles during the request
   handling time.