Undulatory microswimming near solid boundaries