Fix: yield inspection can wrongly 'import' a subquery's clone originator by following CGLIB'S internal reference
Batch inserts were not properly setting the isPersisted flag
Added some preliminary support for Scala 2.10-M7.
Used a mutable ListBuffer when collecting children to avoid repeatedly appending to an immutable list.
Fixed what seems to be a bug in productElement(index).  The call was delegating to _get which seems to start with index 1 while productElement should start with 0.
Added a field cache, restricted fields that are mixed in by CGLib from being traversed (this was a major performance issue) and removed the return statements I came across in favor of a more functional style.
More changes for 2.10 support
Added @volatile modifier to the field cache.  Thans to @ijuma for the suggestion, and thanks to @drdozer for the original idea.

Also made a few more minor changes for Scala 2.10 compatibility.
Changed build setting so that scala 2.10 builds will include the milestone identifier
Create SquerylSQLException and throw for DB errors

This is a proposed fix for #83.

By throwing a specific exception type to indicate database errors, we
can make it easier for client code interested in detecting/handling
database errors to distinguish those exceptions from other exceptions
that may be thrown (either by Squeryl or other code in the same
try-catch block).  This commit introduces the SquerylSQLException type
for this purpose.

Incompatibilities are minimized by extending SquerylSQLException from
RuntimeException and keeping the messages mostly unchanged.

Possible incompatibility due to changing the message in Table.{insert,
update}.  Since this error could result from poorly written triggers
which increase the row count unnecessarily, users may be confused if the
operation was successful yet the exception was thrown without a clear
reason why.  If this is controversial, the commit can be reworked to
avoid this change.

Signed-off-by: Kevin Locke <kevin@kevinlocke.name>
Throw NoSuchElementException where appropriate

In both the Scala API and the Java API NoSuchElementException is thrown
to indicate that an element is not present where required.  Confirm
developer expectations by following that convention here as well.

Signed-off-by: Kevin Locke <kevin@kevinlocke.name>
Throw IllegalStateException where appropriate

When the programmer has called a method at an illegal or inappropriate
time, throw an appropriate exception to indicate that.

Signed-off-by: Kevin Locke <kevin@kevinlocke.name>
Throw UnsupportedOperationException for unsupported operations

When a method is called on an object which does not support that
operation, throw an UnsupportedOperationException.

Signed-off-by: Kevin Locke <kevin@kevinlocke.name>
Merge pull request #151 from kevinoid/typed-exceptions

Make it easier for users to distinguish Squeryl exceptions
new test for nested exists
Merge branch 'master' into ccap

Conflicts:
	project/SquerylBuild.scala
	project/plugins.sbt
	src/main/scala/org/squeryl/Query.scala
	src/main/scala/org/squeryl/Table.scala
	src/main/scala/org/squeryl/View.scala
	src/main/scala/org/squeryl/dsl/ast/QueryExpressionNode.scala
	src/main/scala/org/squeryl/internals/DatabaseAdapter.scala
	src/main/scala/org/squeryl/internals/FieldMetaData.scala
	src/main/scala/org/squeryl/internals/FieldReferenceLinker.scala