codec: clean up use of appengine and safe build tags
First, in build constraints, 'safe' is synonymous with 'appengine'.
Ensure this is honored in the build constraints.
Then, use the following logic to handle treatment of safe tags,
as they show in files.
< go 1.7 === helper_not_unsafe.go
go1.7+, safe tag === helper_not_unsafe.go
go1.7-1.11, safe tag === goversion_maprange_lt_go112.go
go1.12+, safe tag === goversion_maprange_gte_go112.go
go1.7+, NO safe tag === helper_unsafe.go
Fixes #310