All programs have a context now. Role implication is used to make public
programs publicly readable.
Migration to take old public programs and make them new-style public
programs.
Merge branch 'develop' into feature/new-public-programs
Make the private checkbox visible when editing a program. Make it so
that a program can be switched between private and public.

There is a new private field added to the Program model. This field is
used to key when role implications for public read permissions should be
added or removed.
Check Program private property to determine if the program is private or
not.
Merge branch 'develop' into feature/new-public-programs
Remove lock icon from public programs. Allow audits to be created for
public programs.
Merge branch 'develop' into feature/new-public-programs
Make sure to properly set private for existing private programs.
Merge remote-tracking branch 'origin/develop' into feature/new-public-programs
Fix migration `down_revision`

* #1293197f86 was merged first
Fix `and` -> `and_` usage in several queries
Merge branch 'develop' into feature/new-public-programs
Make changes necessary for tests to pass. Some tests were broken by the
changes made to public programs.
Merge pull request #731 from reciprocity/feature/new-public-programs

62062626 Public programs now have their own contexts and can have audits