ElemDiver interface, impl, and tests

I’ve added in an implementation of ElemDiver, and tests.
That's not true; temp is never taken as a parameter, so it is [automatically dereferenced](http://golang.org/ref/spec#Calls) for method calls:

>If x is addressable and &x's method set contains m, x.m() is shorthand for (&x).m()