Move the m_IsValid and bannerfile pointer (now unique_ptr) into the interface class.

These are just copied in both banner file implementations, so it makes
sense to define it in the base class - less duplication of code.

IsValid is also made a concrete class in the interface class, because both
IsValid implementations did the same thing, return m_IsValid. So instead
we have it defined in the interface class, and the inheriting classes
just modify m_IsValid instead, and IsValid will reflect it; again, without
the duplication of code.
Fix indentation within BannerLoader.h