Fixed bug in Entity fields value() calling len() on None

The value function for Entity and Multi-Entity fields had the possibility of
calling len() on a None value.  This is because it was referencing the wrong
variable in an if statement.
Added an example SgProject entity with util functions for Seqs and Shots

Added an example SgProject Entity with util functions for getting a list of
Shot and Sequence Entities for the project.  Also added functions for getting
just the names of Shots and Sequences for a project.
SgSchema objects can now init themselves in a separate thread

When a connection is created a schema object is created for the URL.  After a
SgConnection is created the metaclass calls initialize() on the SgSchema for
the URL.  This can take some time when the schema for a given URL has not been
initialized before.

SgSchemas now have the ability to start a thread which performs the build
initialization, SgSchema.build() can also be called not threaded though the
default is to use threading.

A build event object (threading.Event) is locked until the schemas build()
function is complete so any calls to a SgSchema will block until the build
process has completed.  The call to wait() for the build event object does
contain a timeout limit so that in the event build() raises an exception schema
functions wont lock out.  The timeout value for the wait calls is a class var
named "BUILD_EVENT_TIMEOUT" on the SgSchema class.  The value is defaulted to 20
seconds but can be modified.

Threading the build process allows connection objects to now be creating without
blocking until the schema has been initialized.

Also added a function SgSchema.isBuilding() for returning if the schema is
currently being built.
Added doc string for SgSchema._build()

SgSchema._build() did not have its doc string set.
SgConnections now check if the entity belongs to themselves before certain tasks

The batch(), delete(), and revive() functions now check if the Entity(s) that
will be modified originate from the connection.  This prevents Entities from
being modified by other connections for security reasons and because its just
not good practice.
Fixed two bugs with Multi Entity fields value() accepting 'all' and 'default'

Multi Entity fields value() did not properly set the names of fields to sync
when 'all' was specified.  It was using the field parents fieldNames()!

When 'default' was passed the code thought it was dealing with an Entity object
however the Entity object was not yet created and the data was a dictionary.
Fixed SgFieldID and SgFieldType never having valid set to True

When the class property for valid was moved to being private the ID and Type
field classes were not updated to reflect this change so they were never
properly setting themselves as being valid.

This didn't have any impact on code except it meant that isValid() would always
return False.
Merge branch 'develop'