Initial commit of combined version of RAMP and SMART

This commit represents the initial prototype version of RAMP (Record and
Activity Management Program) and SMART (Software for Managing Academic
Records and Transcripts), built on top of Ramp.  Ramp is a program that
supports the easy creation of simple activity files (lists of grouped
activities with descriptions), provides a mechanism for creating
database views (called "table settings") that is meant to be accessible
to domain experts (as opposed to database experts), and provides
software for populating, viewing, and updating database tables through
the table settings.  For any database table for which a table setting
has been defined, Ramp supports:

 - A search mechanism for finding records based on values in fields

 - A table view for viewing a set of table records with column headings

 - A list view for viewing table records (often just a defined subset of
   columns, useful for selecting a single record from a search that
   yielded multiple results)

 - A single-record view for viewing records in their entirety,
   modifying them, or adding new records to the table; single-record
   views may also contain links to other, related tables or records if
   the relationships are defined in the table setting

Ramp is set up to work with tables defined in a MySQL database, using
the Zend Framework.

SMART currently consists of a set of activity files and table settings
to support managing academic records in three broad categories:

 - Curriculum records dealing with courses of study (e.g., undergraduate
   mathematics), courses or modules (e.g., Calculus I), and their
   individual offerings (e.g., the Spring 2012 offering of Calculus
   I)

 - Instructor records (e.g., contract start/end dates, courses or
   modules taught)

 - Student records (e.g., courses of study, test scores, enrollment
   history)

In time, the plan is to separate Ramp and Smart into separate projects,
and to expand Smart to include customized activities specific to the
academic records domain (as opposed to the more general-purpose
activities supported by Ramp).
Establish BSD 2-Clause license and add README
Add file that was previously being ignored:
	new file:   .zfproject.xml

Modify files to reflect design choice to use name the main activity file
in various test and demo directories index.act.
	modified:   application/controllers/IndexController.php
	modified:   application/settings/activityTesting/index.act
	modified:   application/settings/formTesting/TermStanding.ini
	modified:   application/settings/settingTesting/Person.ini
	modified:   application/settings/tests.act

Remove symbolic link to ZendFramework library, since the location of it
will be different on different user's machines.
	deleted:    library/Zend
Add .htaccess file for public
Fixes the login page for some php/zend combinatations, which was not
displaying because of an extraneous end-of-PHP-tag ( "?>") at the end of
the AuthController.php file.  This commit also includes updates to the
comments in two table setting files from overly general templated
comments to more specific comments.
Merge pull request #8 from kupaka/master

Add .htaccess file for the public folder
Provide instructions for creating Ramp/Smart  MySQL accounts and the
demo and development databases, as well as data for the demo databases
and examples of virtual hosts for the demo and development databases.
Merge branch 'installationBranch'

Provide installation instructions for creating MySQL accounts and
databases for running Ramp/Smart.
Provide Installation Instructions Supporting Multiple Environments

Provide Ramp installation instructions, including instructions for
setting up multiple environments (e.g., production, testing, and
demo environments), each of which may have a different database,
set of menus, or color scheme.  Support differences in data, menus,
and color schemes among environments.  Specifically:

- Provide new INSTALL.txt file in installation directory; make minor
  updates to INSTALL_DB.txt and README.txt to reflect new INSTALL.txt.

- Rename application.ini to applicationTemplate.ini so that future
  software updates will not overwrite user-customized application.ini
  files.

- Comment out setting of APPLICATION_ENV in .htaccess, which was
  overriding settings coming from vhosts.

- Re-organize cascading stylesheets in public/css to allow different
  APPLICATION_ENV environments to have different color schemes.

- Define menu items in menu configuration files specific to the
  APPLICATION_ENV environment rather than in IndexController.  Create
  new menus for different environments.

- Create About files for Ramp and Smart.

- Move several table settings from the top-level settings directory
  down to appropriate sub-directories.
Improve formatting for HTML activity types
Fix Problems with Adding New Records to Tables

Fix a set of bugs related to adding new records to tables that were
introduced when new input validation was added (shortly before initial
commit, probably).  The fixes include:
  - Auto-increment fields were marked as required, even though
    it is OK (even preferable) for the user to leave them blank and let
    them be filled by the auto-increment.
  - Fields were being marked as required even if they had a default
    value (such as CURRENT_TIMESTAMP).
  - String types for which a length is not meaningful (e.g., text areas
    for MySQL text types) were being compared against a maximum length
    of 0 (indicating length not meaningful) and found to be invalid for
    being too long.
  - The default match-any-value option for selections (enumerated types)
    was being passed along as a user-specified value to add to a record,
    at least when the selection was read-only in the Add table setting.
    Fixed to treat the match-any-value value the same as null or empty
    string (not passed to Add).

In addition, move hard-coded strings in Application_Form_TableRecordEntry
to constants to help with future internationalization, since
Application_Form_TableRecordEntry was being modified anyway.
Allow greater customization of what users see; Update settings and menus

Allow greater customization of the look of different applications or
environments:
  - Allow user to specify initial activity in configs/application.ini
    rather than always ask user to type in an initial activity.
  - Allow for different initial activities for different environments.
  - Allow for variations in title that show environment.
  - Allow for variations in icon (favicon).
  - Update Smart & Ramp menus to either remove Home menu (e.g.,
    smart.demo) or to make Home the same as the initial activity,
    removing the equivalent menu item.

Update settings and menus:
  - Move all testing table settings and activity lists to a new tests
    directory.
  - Add a new menu item to Smart menus for Core Tables category.
  - Remove Last Updated fields from Add and Edit table settings,
    since a) they should be set automatically, not manually by users,
    and b) CURRENT_TIMESTAMP default is not recognized by the date
    validation as a valid date, so must be removed or replaced (if
    the field is visible) before the entry can be added or updated.
  - Update sample.ini file (current substitute for user documentation
    about table settings) to reflect recommendation that dates with
    a default of CURRENT_TIMESTAMP not be visible on Add/Edit table
    settings.
  - Update Add table setting for ModuleOfferings to just specify
    term, code, number, and section -- then user has to use Edit to
    edit everything else (this allows system to initialize various
    fields with default values from other tables).
Rename database creation files to reflect their status as templates
Add role field to users table; add users table to basic Ramp configuration.
Capitalize Ramp directory name in sample vhosts file.
Fix menu for Smart Development/Test envionment to not have Home/Smart duplication
Add Support for Authentication and Authorization

Add support for authentication through a users table in the database
(`ramp_auth_users`), which has username, password, role (see next
paragraph), and, for logging and communication purposes, first name,
last name, and email address.  [NOTE: This commit does not include
support for changing passwords (neither users changing their own
passwords, nor administrators changing users' passwords).  That should be
the focus of a future commit.  For now, the administrator would have to
do it through the database directly.]

Add support authorization through roles, resources, and access control
list rules.  Roles (and the role inheritance hierarchy) are defined in
the `configs/application.ini` configuration file, as are some resources
(see below).  Users are associated with roles in the `ramp_auth_users`
database table.  Access control list rules, which are role/resource
associations, are defined in a separate database table, `ramp_auth_auths`.

Resources are associated with specific actions in controllers.  There
are several types of resources:
  - Resources related to the Index, Authorization, and Error controllers
    are defined in the `library/Ramp/Acl.php` file (hard-coded).
  - Activity list resources are the directories in which activity list
    specification files reside (`activity::index::directory-name`).
    These can be defined in the `application.ini` configuration file or
    just appear in access control rules in the `ramp_auth_auths` table.
  - Table resources are the names of individual database tables.  The
    tables do not need to be explicitly as resources, they just appear
    in access control rules in the `ramp_auth_auths` table.

Also:
  - Move definition of ANY_VAL back to model because controller should
    depend on model (not the other way around)
Merge branch 'authorization'

Conflicts:
	application/settings/smartDevMenu.ini
Split applicationTemplate.ini into Different Templates for Ramp and Smart
Split applicationTemplate.ini into Different Templates for Ramp and Smart