Optimize refine statement implementations
refine is a simple statement, optimize the memory layout of its
implementation classes. Most of the benefits here are coming from
not needing to retain source/definition, but for simple refines
we can also skip a singleton list.
Also mark future direction for evolving the implementation contract,
as it has some aspects which are definitely not nice.
JIRA: YANGTOOLS-1065
Change-Id: Ic07ba74b0d2ea685a3ce8aed567a89125d04850e
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>