Make the FullName (which is the primary field) Not required, and create a workflow process to CONCAT the FullName from the FirstName + " " + LastName.
You are done then!
You could create a calculated field to do the Concatentation - it would look like:
CONCAT(prefix_firstname, prefix_middlename, prefix_lastname)
Then the workflow would just set the primary field to be the same as the calculated field (as per earlier in the thread, the primary field can't be a calculated field, hence the need for a workflow). The workflow would need to be triggered off a change to any of the individual fields (it can't be triggered from a change to a calculated field)