Initial implementation

Provides implementation of list, show, add/update and delete functions.
Not sure what we'd do in the else that's different than what it does now? The comment's there because, due to the validation that happens before we get to this function the input string is guaranteed to have only characters in the range 0-9a-fA-F. I have to have something to return in this case though otherwise it's a compile error.