demo: updated TNullInterfacedObject implementation.

- It was missing the IUnknown declaration in the class
- The IUnknown signature has changed in recent FPC versions.
demo: Removed compiler warnings, and brought demo up to latest standards

- UI widgets are defined private
- cleaned up uses clause to remove compiler hints about unused units
- Added a new File|Add menu item, which also uses a command instance