Solving 1-D boundary-value problems with BandAid: A functional programming style and a complementary software tool