Separate direct/virtual methods and static/instance fields in the ClassDef interface

This is unfortunately required to support not-quite-well-formed dex files
containing duplicate static/instance fields, or duplicate direct/virtual methods,
which dalvik inadvertently allows.

In cases when there are duplicate fields/methods in the same category, we
unambiguously remove/hide the latter duplicate fields/methods.
Gracefully handle duplicate fields/methods in baksmali
Add convenience constructor for ImmutableClassDef
Add AnnotationVisibility.getVisibility(String)
Always use one of 2 pre-built ImmutableBooleanEncodedValue instances