Dirichlet nan

This lets us selectively unconstrain part of a Dirichlet boundary by returning NaN from the Dirichlet function.

This turned out to be a dead-simple change which shouldn't break existing code, and the "correct" way to decide which dofs to leave unconstrained seems to be straightforward.  If it passes my tests I'll probably merge later this week.