This is a clean up of the code generation (reducing the line count
sigificantly and making failure much noisier prior to the CGO call -
though will only catch the most egregious errors).
The approach I've taken here differs significantly from that in blas/cgo
where all the checks are done in the generated binding code. Here there
is too much complexity, so we do the checks in the Implementation method
and then call the clapack function.
Also use CGO_LDFLAGS env var; this is how we do things in blas and it
allows us to have code that will work with go get when the environment
is correctly set up - without requiring go generate or perl use by the
client.