Several backend changes.

- Added Null backend for optional backends.
- Added required 'name' variable to backend.
- Fixed multiple errors in SFML backend.
- Added more to the initialization process.