You wont get a distribution instance when you are initialising it in a model context. What PyMC3 does within the pm.Model()... is to create a theano tensor with the name as a FreeRV, and add logp (as a constraint for the tensor FreeRV) to the total model logp function.
So as long as you implemented the logp of your MillerDist correctly, your model will behave as you implemented (i.e., a variable following a prior distribution as specified by MillerDist). Dont worry that it does not return a distribution instance - it is not supposed to.