Made check against max size of edge data more generic.

The dynamic engine is hard-coded to check that the edge data does not exceed a certain value. I'm not exactly sure what the rationale for this was, but I didn't want to remove it in case it would break something.

The problem was that it assumes that the edge data would be a floating point number, which is not always going to be the case.

I attempted to make it more generic. However the solution is a bit messy in that even if a client program does not set a max value, it must still implement the "<" operator for comparing whatever edge data type it uses.

I couldn't think of any better solution with my knowledge of C++, and without significantly changing the architecture.

Not necessarily expecting you to accept this change, just pointing out the issue.