Take into account new "frozen" attribute

@pcmanus this is a work in progress, I wanted to make sure we agree on the `Frozen` annotation before I start implementing checks in the mapper.

There's a catch because we can't annotate type parameters on a collection (this will come in Java 8), so I've added a `targets` attribute:

```java
@Frozen
private Address address;

@Frozen(targets = {Target.VALUE)}
private List<Address> addresses;

@Frozen(targets = {Target.KEY, Target.VALUE)}
private Map<CustomType1, CustomType2> someMap;
```

For tuples, this gets even more complicated because of nesting. But if the goal is schema generation, we'll have to provide the tuple type anyway because `TupleValue` does not provide enough information, so I suggest we include the whole tuple definition in an annotation:

```java
@TupleDefinition("tuple<text, frozen<tuple<int, int>>>")
private TupleValue someTuple;
```