go spec: clean-up and consolidation of spec with implementation
go spec: clean-up and consolidation of spec with implementation

Specifically:
- introduced notion of "underlying type"
- removed notion of type compatibility
- consolidated rules about assignment compatibility in
  assignment compatibility section
- be consistent with specyfing that nil is the value
  for uninitialized variables that can be nil (this
  was not specified clearly for pointers, functions, interfaces)
- added/fixed various related links throughout
- clarify language on conversions

R=rsc, r, iant, ken2
CC=golang-dev
http://codereview.appspot.com/1536041
abustany/go,abustany/go,abustany/go,abustany/go,abustany/go,abustany/go,abustany/go