spec: introduce notion of basic interface, misc. fine-tuning
spec: introduce notion of basic interface, misc. fine-tuning

A basic interface is a classical Go interface containing only
methods or embedding basic interfaces.

Use this to simplify rule about what interfaces may be used
where. The term "basic interface" will also be useful when
talking about various interfaces in general.

Fix rule restricting union terms: as it was written it also
excluded interface terms with non-empty method sets due to
embedded non-interface types with methods.

Split the large section on interfaces into three smaller
pieces by introducing section titles.

Change-Id: I142a4d5609eb48aaa0f7800b5b85c1d6c0703fcb
Reviewed-on: https://go-review.googlesource.com/c/go/+/384994
Trust: Robert Griesemer <a6752097faebf1f02d80107d77a9be009089afe3@golang.org>
Run-TryBot: Robert Griesemer <a6752097faebf1f02d80107d77a9be009089afe3@golang.org>
TryBot-Result: Gopher Robot <66cb808b70d30c07676d5e946fee83fd561249e5@golang.org>
Reviewed-by: Ian Lance Taylor <87e9c6d529889242b7e184afb632328636553ab4@golang.org>

nawawi/go,nawawi/go,cloudflare/go,nawawi/go,cloudflare/go,nawawi/go,CAFxX/go,golang/go,CAFxX/go,cloudflare/go,cloudflare/go,golang/go,CAFxX/go,cloudflare/go,golang/go,cloudflare/go,CAFxX/go,CAFxX/go,golang/go,CAFxX/go,nawawi/go,golang/go,golang/go,nawawi/go,golang/go,cloudflare/go,golang/go,nawawi/go,CAFxX/go,nawawi/go,cloudflare/go,CAFxX/go