optional private constructors (closes #82)

Enable with --allow-private-constructors compiler option. When enabled, constructors may be private instead of public and classes with private constructors cannot be instantiated outside of their parent class at compile time.
15 files changed