Here's a four part catch rule that is as unambiguous as is possible (for the NFL) and solves many many problems:
1. A receiver has to secure the ball and get both feet down in bounds to start the catch process.
2. Once he takes a step after both feet come down he is a runner and has caught the ball.
3. Receivers who do not take a step between possessing the ball and either going to ground or touching out of bounds must maintain possession through contact with the ground.
4. Maintaining possession means the ball does not touch the ground. If the receiver is now out of bounds and he bobbles the ball, forcing the catch process to start over, it's incomplete.
Dez Bryant = Catch, step, runner, complete.
James (Steelers) = no step, ball touches ground, incomplete.