It's theoretically possible, but— to be possible without editing the DLL— you'd need to have the outposts essentially just be
cities, and then use Lua workarounds to impose the conditions you want.
You'll most likely want to create a custom unit button for the outpost-building settler, and then the function tied to that button will call InitCity to create the actual outpost. (Because we're using a custom button, we can make sure this ability will only be possible within your own borders.) You'll want to immediately add a dummy building to that city that marks it as an outpost as well, and use the SetPopulation function to set its population to zero.
You'd then want to set up two utility functions. The first will be called on CityCanConstruct, and will prevent outposts from being able to construct any buildings. The second will be called on SetPopulation, and will reset an outpost's population to zero if it ever changes.
There are a handful of potential problems you might run into here. First, the outpost will have its own cultural borders as if it were a regular city. You might be able to counteract this by having a function on CityBoughtPlot that reverses its actions, but I'm not 100% certain how workable that would be. Second, the outpost will have its own workable radius of tiles, overlapping with the "real" cities it's near. This will increase the amount of micromanaging that players need to do to try to work their tiles, especially given that Food would be useless for an outpost. Finally, because the game will consider outposts to be cities, building outposts will increase the costs of techs and social policies accordingly.
If you were willing to cut the HP and unit production abilities, you could theoretically have the outpost act as effectively a tile improvement with a ranged attack; LastSword incorporates that ability into his Benin mod
. It's not an easy ability to implement, but is nevertheless possible.