Fix incorrect entry assembly selection on mobile
Fix incorrect entry assembly selection on mobile

On Android, `Assembly.GetEntryAssembly()` returns `null`. That is not at
all surprising, as per the docs, there *is no* entry assembly - the game
is being ran through mono.

`DebugUtils`'s entry assembly detection code would wrongly assume that
if the entry assembly as given by the CLR is null, then the game was
being ran in a test context. Therefore, on Android, all `DebugUtils`
members that utilised the assembly detection, would use the properties
of the `nunit.framework` assembly, instead of the executing assembly.

The reason why the `nunit.framework` assembly was chosen was that if an
NUnit test context is requested outside of an actual test, NUnit will
make up its own context (with the class name of
`TestExecutionContext.AdhocContext`). That class resides in
`nunit.framework`.

Recent upstream NUnit changes (enabling SourceLink support and shipping
portable debug symbols) have caused this to trip over at the game side,
and game builds in release configuration would show as debug builds.

To resolve, leverage the `AdhocContext` in order to determine if we are
running in the context of a particular, actual test. This makes it so
that on Android, `DebugUtils.GetEntryAssembly()` will now defer to the
executing assembly, and fix the wrong values of `IsDebugBuild`
and similar.

peppy/osu-framework,ZLima12/osu-framework,ZLima12/osu-framework,smoogipooo/osu-framework,peppy/osu-framework,ppy/osu-framework,smoogipooo/osu-framework,ppy/osu-framework,ppy/osu-framework,peppy/osu-framework