The best answer is to tell him he has 2 weeks to find another place to live as he has to move out. You must not fall for the tantrums and guilt trips he will most definitely provide. Just state the fact that it is past time for him to be on his own and repeat the 2 week notice. Since he has been there at least 4 years past the normal time for a kid to move on you may be playing a part in situation. He can not grow up until you let him go on his own. The baby bird that is not pushed out of the nest is crippled for life and dies in the nest.
He is of legal age. Give him a ultimatum, You can go to a judge and get an order of protection to have him banned from your property. This is called parental abuse. Stop paying his bills PERIOD. Tell him if he wants a cell phone to get his own , etc.
You can put the case in court as all the requirements seems to be fulfilled. Later they will themselves make him evict with a little amount that you have to pay.