Boundary conditions

Making this into a pull request to allow commenting, etc. Still premature to actually pull, but I think everyone involved knows that.
I'm undecided on the namespace here. I really want to write code with using declarations for the names in the BoundaryConditions namespace so one doesn't have to write "BoundaryCondition::mirror_interior" (which is ugly as it intermixes Bicapitalized names with lowercase underscored names). In this style, I feel writing "using BoundaryConditions::constant" and the just writing "bounded = constant(source, 42, 0, width);" is a little confusing. That said, I don't like the name "constant_exterior" much either.