half-done PoC of typed channels
add selfChannel and createChildren
clean it up a little

- remove Parent trait and use ChannelList to describe the parent
- remove ugly hack and switch to erasure-based dispatch to the channels
- add parentChannel
- make ChannelRef a value class
replace Channel[] trait with simple Tuple2 for nicer syntax
change Recv[] from partial to total function

- also change :=: to :+: for faster typing pleasure on US keyboards
add tests for parentChannel
add ChannelRef.narrow[]
add narrowing from ActorRef to ChannelRef
add polymorphic channels

- channel[T <: ChannelList] takes a WrappedMessage[T] => Unit function
  because there cannot be a typed sender reference (which type would it
  have?)
- ChannelRef[T] allows forwarding of WrappedMessage[T] (and nothing
  else; keeping the sender is essential)
- move ActorRef.narrow implicit into the package object
- do not accept top-level Channels which send to their parent
add typed ask support
add check for same-erasure channels
add check that all channels were declared
add verification of ping-pong chains

- basic principle is that if we get a reply of type T1 and our channels
  allow us to reply to such a message with type T2, then the target
  needs to support that as well, and so on.
- due to this, forwarding will have to be restricted; but it might well
  be that forwarding will not be completely safe in any case
create akka-io subproject, see #2884
add testkit as a dependency for akka-io, see #2884
Add first version of TCP message protocol
Merge pull request #1009 from spray/wip-IO

Add first version of TCP message protocol
add design docs as background info for IO layer, see #2890
Merge pull request #1010 from akka/wip-2890-design-docs-∂π

add design docs as background info for IO layer, see #2890
add Tcp IO extension and first draft of settings/options, see #2888