Ensure TestCases in messages is serialisable

Derived instances of `IExecutionMessage` are being created with code like `TestCases.Cast<ITestCase>()`, where the resulting `IEnumerable<>` isn't serialisable. This change ensures the passed in enumerable is converted into a serialisable list before it's assigned.