Add an ExceptionWithStackTrace class to represent throwables
ExceptionInterface now returns a Deque of exceptions
Remove the inner ExceptionWithStackTrace from ExceptionInterfaceBinding

Instead use the ExceptionWithStackTrace provided by the Exception Interface
Use ExceptionInterface.getExceptions() rather than ExceptionWithStackTrace.getThrowable()
Remove the ImmutableThrowable usage from ExceptionInterface
Do not use a cast in the Logback module

The IThrowableProxy may not be an instance of ThrowableProxy, this leads to ClassCastExceptions.
Instead, create an ExceptionInterface using only the IThrowableProxy interface
Fix the mock previously for ImmutableThrowable
Remove ImmutableThrowable
Remove unused variable
Fix indentation
Move the methods to create ExceptionWithStackTraces in ExceptionWithStackTrace
Ensure that chained exceptions are sent in the right order
Make sure that the queue contains exceptions from the newest one to the oldest one
Ensure that the exceptions are stored in the correct order in the queue
Simplify the creation of ExceptionWithStackTrace with a constructor accepting a Throwable
Improve documentation

Remove default getters/setters documentation.
Change the package name getter in a oneliner
Remove the getStackTraceMethod from ExceptionWithStackTrace
Rename ExceptionWithStackTrace into SentryException
Remove logs for circular exceptions