Merge pull request #136 from google/moe_writing_branch_from_449e92e4a7f035483fb938a689e286da8af749d2

Fix the SuperficialValidator to properly handle upstream impact on AnnotationValues
modified Property to keep basic annotations.
added ability to keep values inside an annotation.
moved tests to a separate file, added more test cases.
switched to using `TypeSimplifyer` to get annotation name.
fixed indentation of annotations in template.
refactored annotation tests to minimize duplicate code.
added tests to cover basic single value annotations.
added tests for array-based annotation values.
cleaned up names and combined statements.
switched to `ImmutableList` throughout. changed `Iterable` for `List`, since order matters.
added comment explaining `TestEnum.toString()` override.
added test for nested annotations.
cleaned up the constants to keep the tests more readable.
switched to new `truth` packages. added `<?>` to class definitions.
Merge pull request #127 from jmcampanini/feature/keep-annotations

@AutoValue: copy annotations from abstract property methods to their implementations in the generated class.
Create README.md
Add mention of visibility.
Add maven usage and clean up a bit.
Remove extraneous paren.