Organize, Format, Alphabetize and Finalize

Code cleanup after the many new operators that have come in over the past 2 months.

1) Organized imports
2) Formatted all code for standard whitespace, code formatting etc
3) Sorted methods in `Observable.java` alphabetically
4) Updated all license headers
5) Made `Observable` methods final as they are not intended to be overridden in the rare cases when inheritance makes sense for `Observable`. This better communicates the inheritance intent of the class and prevents against accidental misuse (such as overriding `subscribe` which breaks it).