Chapter 5 self-test answers.

I wondered about that - didn't actually try my solution though. Unfortunately there doesn't seem to be a collector for composing a `String` from chars. I'd be tempted to remove some of the complexity from the map lambda by re-writing it as:
```java
private static String cipher(String message) {
        return IntStream.range( 0, message.length() ).boxed()
                 .map( i -> (char) cipherCharAt.apply(i, message).intValue() )
                 .map( Character::toString )
                 .collect( Collectors.joining() );
 }
```