Add some error-handling types and helper functions

Signed-off-by: John Else <john.else@citrix.com>
Rewrite init and shutdown to use the new error handling code

Signed-off-by: John Else <john.else@citrix.com>
Shutdown the NVML library at the end of the test

Signed-off-by: John Else <john.else@citrix.com>
Add labelled argument

Signed-off-by: John Else <john.else@citrix.com>
Rewrite device module

* Improve error handling
* Remove any use of pointers in the module interface

Signed-off-by: John Else <john.else@citrix.com>
Add labelled arguments to Device module

Signed-off-by: John Else <john.else@citrix.com>
Initial commit of nvml.mli

Signed-off-by: John Else <john.else@citrix.com>