Modifying Python routines for Python 3

So far only changes to print:

print ""  -> print("")
Adding bout-config script

Intention is to make it easier to use BOUT++ as a library
and to use multiple versions e.g. through Modules
Added an eigenvalue solver to implement power method

Iterative method, repeatedly applying the RHS function to
a solution. The result is the largest eigenvalue and
corresponding eigenvector.
Modifying preconditioner handling in solvers

Need to enable PhysicsModels to use preconditioners.
Moving the callback function handler into Solver,
rather than separate implementations
Implemented 2nd and 4th order Neumann and Dirichlet boundary conditions, however have not tested yet. Also fixed the old Neumann implementation which had a bug if set to a non-zero value on the y boundaries (it set the grid spacing as dx regardless of whether it was an x or a y boundary).
Bugfix to upgraded boundary conditions: apparently the solver does not like to have NAN values even if it does not have to evolve them; changed the '#ifdef CHECK' values in the 2nd order routines to be 1.e60 instead of NAN.
Another bug fix: BoundaryRegionYDown::next1d() needed x++ instead of x--
Added option to use free boundary conditions: If any field has free boundary conditions on a boundary (xin, xout, ydown or yup) it sets a bool in Mesh to true (mesh->freeboundary_*); the derivatives in the guard cells of that boundary are then calculated using non-centred differences so that ddt(*) in the guard cells can be calculated. The free boundary condition then just refrains from setting either the field or the time-derivative in the guard cells on the boundary or boundaries where it applies, thus allowing them to evolve. The implementation does not yet extend to flux- or upwinding-derivatives and the interaction with staggered grids is almost certainly not correct. Also it is probably not as neat as it could be, derivs.cxx in particular could probably use tidying up somewhat.
Free boundary conditions upgrade: tidied up derivs.cxx somewhat, added implementation to 4th derivatives
Changed names of BoundaryRegion* objects in boutmesh.cxx from "target" to "upper_target" and "lower_target" to fix bug where Field3D::applyBoundary(const string &region, const string &condition) would only apply the boundary condition on one boundary when called with region="target" if both targets were on the same processor.
Changed dirichlet boundary conditions for laplacian inversion to the case where the bndry is half way between the first guard cell and the first actual grid point
output.make to capture flags for use in bout-config script

Flags needed to compile e.g. PETSc are available at configure
time. If the environment changes later then PETSC_DIR etc. may
change, in which case the link flags could be different.
boundary_conditions_upgrade bug fix: was passing doubles instead of ints in boundary_standard.cxx.
reverted to original dirichlet boundary conditions to fix broken test_laplace
Refactored the flags in invert_laplace: removed all the boundary conditions from `flags' and put them in `inner_boundary_flags' and `outer_boundary_flags' instead; updated the implementations correspondingly. Largest flag is now 1024 instead of 2097152 which should make setting the options more convenient (if not much clearer) and leave more room for implementing further options. This will break all examples that used flags other than 0 and any that call the invert_laplace() functions which now have extra arguments for inner_boundary_flags and outer_boundary_flags.
Use global_flags instead of flags for the new-style code, so that legacy code can still use flags option. setFlags(int flags) now interprets old-style flags and sets global_flags, inner_boundary_flags and outer_boundary flags appropriately. invert_laplace() functions reverted back to just an `int flags' argument without *_boundary_flags, then use the new setFlags(flags). Legacy code should now continue to work, while the new style allows easier additions to global_flags and *_boundary_flags.
Modified a few files that used flag values (formerly) set in invert_laplace.hxx not to depend on it (just copied in the requisite numerical values).
boundary_conditions_upgrade: Fixed neumann_4thorder, second guard cell equation's indices were wrong
Merge branch 'boundary_conditions_upgrade' of http://github.com/boutproject/BOUT-dev into boundary_conditions_upgrade
Changed BoundaryDirichlet_2ndOrder to calculate the guard cell from a 3rd order accurate interpolation, so that (first) derivatives should be second order accurate. Added a preprocessor flag which, if set, calculates by extrapolation a value for the second guard cells rather than setting them to 1.e60 (#ifdef CHECK) or not setting them at all (#else).