Adding tests to the Core module

TL;DR: Any tests that do not require further dependencies should be added to this module, anything that requires additional Corda dependencies needs to go into core-tests.

The Corda core module defines a lot of types and helpers that can only be exercised, and therefore tested, in the context of a node. However, as everything else depends on the core module, we cannot pull the node into this module. Therefore, any tests that require further Corda dependencies need to be defined in the module core-tests, which has the full set of dependencies including node-driver.

ZipBomb tests

There is a unit test that checks the zip bomb detector in net.corda.core.internal.utilities.ZipBombDetector works correctly. This test (core/src/test/kotlin/net/corda/core/internal/utilities/ZipBombDetectorTest.kt) uses real zip bombs, provided by https://www.bamsoftware.com/hacks/zipbomb/. As it is undesirable to have unit test depends on external internet resources we do not control, those files are included as resources in core/src/test/resources/zip/, however some Windows antivirus software correctly identifies those files as zip bombs, raising an alert to the user. To mitigate this, those files have been obfuscated using net.corda.core.obfuscator.XorOutputStream (which simply XORs every byte of the file with the previous one, except for the first byte that is XORed with zero) to prevent antivirus software from detecting them as zip bombs and are de-obfuscated on the fly in unit tests using net.corda.core.obfuscator.XorInputStream.

There is a dedicated Gradle task to re-download and re-obfuscate all the test resource files named writeTestResources, its source code is in core/src/obfuscator/kotlin/net/corda/core/internal/utilities/TestResourceWriter.kt