1) You got to remove the VIEW ANY DATABASE permission for the public group.
(T-SQL)
USE masterDeny VIEW ANY DATABASE to public
2) to let the user see his database you must make this user the owner of the db when you create the database:
see here for more details.