forms/pilot: Added NotEmpty validator to email_address field

We should not create accounts without email addresses!
views/flights: Fixed exception in /pinned route

File "/opt/skylines/src/skylines/views/flights.py", line 289, in pinned
  ids = [int(id) for id in ids.split('%2C')]

AttributeError: 'NoneType' object has no attribute 'split'
model: Removed DBSession variable
model/base: Use Flask-SQLAlchemy declarative base
model/base: Removed DeclarativeBase variable
model/base: Added monkey_patch_model() function
model/base: Removed metadata variable
tests: Fixed __all__ definition

url_for doesn't exist anywhere near this module/package
model/airspace: Use ST_Contains for get_info() method
model: Use db.Column et al

Using the Flask-SQLAlchemy implementation adds a few additional
functionalities to the returned queries and reduced the number of necessary
imports.

sqlalchemy.types could be replaced too, but since geoalchemy.types would
still be needed it was kept for consistency.
Merge pull request #75 from Turbo87/db-session

Replacing old tg database constructs
views/user: Fixed /change_club route

ProgrammingError: (ProgrammingError) can't adapt type 'module' 'UPDATE flights SET club_id=%(club_id)s WHERE flights.id = %(flights_id)s' {'club_id': <module 'skylines.forms.club' from '/opt/skylines/src/skylines/forms/club.py'>, 'flights_id': 10609}
templates: Use HTTPS for the Google Maps API

This allows us to use the Google Maps on our own HTTPS server too.
Merge pull request #77 from Turbo87/https

templates: Use HTTPS for the Google Maps API
model/auth: Added has_permission() method
model/auth: Added is_manager() method
flask: Removed groups and permissions from request.identity
views/notifications: Add notification count to g object
flask: Reduced request.identity to None or User instance
views/login: Inject current_user into g object

We don't use an anonymous user here though. The variable will be set to
None if no user is logged in.