Red chapter 5 exercises

Chapter 5 exercises, answers and _Try This_ tweaks.
The duplicate behaviour could be reduced, but I wanted to more or less follow the book, with improvements:

```java
Function<String, Supplier<String>> cipher = s -> {
  int j = 0;
  return () -> msg.chars().map(c -> (char)c ^ s.charAt(j++ % s.length())
                          .map(c -> c.toString()).collect(Collectors.joining());
  };
```

Then later:
```java
String encoded = cipher.accept(msg).get();
String decoded = cipher.accept(encoded).get();
```