Addition of Custom Waypoints

Now you can spell out funny words with your paths ;P
Yes, the assert is for error prevention and kills the function when the condition is not met.  It should not be used for wrong inputs by the user, for instance.  In this case I think it is appropriate, though, since the logic of the code "should" never allow the condition to be invalid.

If it ever becomes invalid, then this is due to a bug that should be caught - also, the code will fail, since then wp.begin()+1 is not the correct point to start inserting.  Thus the assert helps to prevent follow-up errors and also makes it clear to everyone reading the code that this condition is true, so they don't have to wonder why the +1 is there.  This is the reason why I prefer to have it in there - but I admit these are mostly a matter of taste.