Redesign JLambda

- In order to generate bridges, Jack uses JMethodIdWithReturnType
to describes bridges that must be generate.
- Remove usage of isSingleAbstractMethodType API until it is
updated to take into account present or absence of classpath.
- JLambda contains a JMethodIdWithReturnType representing the method
that must be implemented by the lambda expression.
- JMethodWithReturnType contains a JMethodId such as all renaming done
in JMethodId will also be available to JMethodWithReturnType. This is
needed to use obfuscation with lambda expression.
- MethodIdDuplicateRemover is in charge to move the JMethodId of the
method interface that will be implemented by the lambda expression
into the JLambda.
- Update jack library to support new JLambda (method to implement and
bridge informations are dump into the library). Update minor to 3 and
previous jack library are not longer supported.

Bug: 27028991
Bug: 27116917
Bug: 26975838
Bug: 27065394

Change-Id: I0db558c78379f6dbea107375bc8734e5cc84581b
30 files changed