Add another layer of indirection in nfc.Device

This makes sure that a program that copies structs of type Device cannot cause
a dangling pointer to come into existence.
Change methods on Device to not use pointer receivers

Now that we have another layer of indirection, we don't need pointer receivers
anymore.
Change naming of constant from EXAMPLE_CONSTANT to ExampleConstant

Go naming convention is to spell constants like ExampleConstant. Better change
the naming as long as nobody depends on this library.