Minor change to the implementation of the operation to flatten
scope-less BlockStmt to fix the remaining 88 failures.



a) AST/stmt.{h,cpp}

Restrict the flattening of scope-less BlockStmt to those that contain
just one statement.  This reduces the immediate benefit of this 
transformation but preserves the statement count for begin/cobegin.

   i)  Modify appendChapelStmt to apply this test
   ii) Implement canFlattenChapelStmt


b) AST/build.cpp

The function createInitFn() included a test that is intended to
exclude the capture of nested Modules.  This test relied on 
the nested module being wrapped in a scopeless BlockStmt.

Expanded the test, which is now written as a separate predicate
in expr.{h,cpp}, to handle the old convention and the streamlined
representation.

Modified the code to loop over the body of the Module to make the
intent a little more clear.



c) AST/expr.{h,cpp}

Added a predicate isModuleDefinition().  For the moment this
recognizes both wrapped an unwrapped module definitions.




Compiled: STD using clang, STD/LLVM using gcc

Tested:   Review of AST dumps of several small programs
          Completion of paratest on Thu July 3
          Completion of paratest on Mon July 7 after picking up latest patches

Review:   Tom


PaperTrail: I have also taken some notes on my testing process so that I will be
            in a better position to do a post-mortem in the unlikely event that
            this check in breaks the nightly build again.



git-svn-id: http://svn.code.sf.net/p/chapel/code/trunk@23758 3a8e244f-b0f2-452b-bcba-4c88e055c3ca