redesign, taking advantages of default type arguments
fix java impl
add new type param to Iterable (that hurt)
fix indexed
deprecations
put first/last back in Iterable
reimplement getFirst()/getLast()
Merge branch 'master' into defaulttypeargs

Conflicts:
	src/ceylon/language/Empty.ceylon
	src/ceylon/language/Exception.ceylon
	src/ceylon/language/Iterable.ceylon
Removed invalid imports from java impl files
TypeParameter: support defaulted type parameters ceylon/ceylon-compiler#951
Exception java impl: renamed c param to clause
Iterable java impl: made type param defaulted and set its bound
test/satisfaction: ContainerWithFirstElement -> Container
Disabled test due to ceylon/ceylon-compiler#953
Merge branch 'defaulttypeargs'

Conflicts:
	runtime/ceylon/language/combine_.java