As the other posters have mentioned, you can achieve your goal "passively" by simply re-using the same yeast again and again. Inevitably, evolution will do its thing and you'll end up with something unique and well adapted to your brewing conditions. AFAIK, this is how the vast majority of commercial and retail yeast strains were developed.
However, you can take a more directed approach to produce something more specific to your wants, and/or drive the whole process more quickly. But its also a lot more work. The process is called "directed evolution", and the name pretty much sums up what you're going to do.
From the point of a biologist, this is both easy and hard. Getting things to evolve is easy (making them not evolve is the real trick). Getting them to evolve into something you want is the hard part.
To do this efficiently, you need two things, a source of mutations and a method of selecting those yeast which have the desired characteristics.
Mutation (the easy part):
For a technical description of mutations rates, you can follow this link:
http://www.genetics.org/content/148/4/1667.full
Mutation rates vary across the genome, but in yeast the average is 0.0027 mutations per genome per generation (i.e. every generation, one out of every 370 yeast will carry a new mutation). So mutation is easy - simply grow yeast!
You can enhance mutation rates easily as well - growing yeast in high salt (0.5M NaCl) increases the mutation rate. Even easier, put a flask of rapidly growing yeast in direct sun for a half hour or so - the UV will induce a whole whack of mutations. But these methods create new headaches, so you may want to avoid them.
Getting something good (the hard part)
While mutating is easy, getting a desirable product is much harder. Once things are mutated, two evolutionary forces will come into play - drift and selection. To achieve your desired goals you need to control both forms of evolution as much as you can. Ideally this would mean plating out each generation into single-cell colonies and selecting only those which have the characteristics you desire (this all but eliminates drift and gives you total control over selection). That is impossible, so instead we need to set up conditions that allow for us to select populations with desired characteristics, or at a minimum, bias conditions so that evolution will go the way we want it to.
Drift:
Contrary to popular belief, the vast majority of mutations will have no effect on the
fitness of the yeast. That is not the same as saying these mutations will have no effect on your beer - it simply means they have no effect on the replication of the yeast. You could very well end up with a mutation that creates something wanted (more of a specific taste) without affecting the growth of the yeast itself. These types of mutations experience drift - i.e. the frequency of them in the yeast population varies randomly; mutations can disappear or become prevalent due to random chance. Unfortunately, there is little that can be done to control for this, aside from occasionally storing (freezing preferably) cultures so you can "rewind" if things go astray.
Selection:
Mutations that have an effect of the survival/replication of the yeast will experience selection; the removal of (or at least decrease in the frequency of) traits that lower the replication/survival of the yeast. This is the easiest factor we can manipulate - by growing yeast in conditions we desire (high gravity, or within a specific temperature range, etc) we can select for the yeast with characteristics we desire, as those with the characteristics we desire will outgrow those which lack those characteristics. You can also select by choosing which yeast get a second chance at growth; for example high flocculation can be selected for by growing the yeast which first drop out of fermentation (or if you're lazy, the yeast at the bottom of the yeast cake).
Selection can also be a problem - sometimes a mutation which causes one desired characteristic will create a secondary characteristic that is undesired. Which is why methods to enhance mutation rates can be problematic - for example, salt induction of mutation also selects for salt tolerance; something which tends to be associated with fusel alcohol production.
Actually Doing It:
There are two approaches you can take - using multiple small fermenters (1L or so) to run parallel batches, or keeping and re-using yeast from full-scale batches that have desired characteristics. The first option is faster, but suffers because characteristics prominent in small-scale fermentations do not always scale upto full-sized batches. The latter is slower, and gives you much less control over the whole process. I've attempted this a few times, the small-method gave the most noticeable changes, but my one attempt at the later method gave the best result. Either way:
1) When transferring yeast from one batch to the next, always transfer a minimal amount. This creates a founder effect; i.e. the small amount of yeast transfered means any mutation in that transfered yeast has a good chance at becoming a common trait.
2) Keep a frozen sample of each generation, so you can backtrack if needed.
3) Have strict selection criteria and stick to them. Even a one batch deviation can set you back months, and inconsistent selection will prevent desired traits from becoming predominant. My first attempt's selection was "tastes good"; meaning I didn't select much at all. Later attempts were much more specific (looking for specific flavors/odors under desired growth conditions) and were more successful.
I'd add here that in my experience the best way to do this is have a wort with minimal flavor - base malt at the desired OG and nothing else. This way you're not trying to select the yeast's characteristics against a background of malt and hop flavours/odors.
4) Start with something close. It is much easier to "fine tune" the characteristics of a strain close to what you want than it is to develop whole new characteristics in a strain.
5) Jump-start the whole process by crossing two strains. Yeast reproduce sexually, so by forcing two strains to interbreed you can generate hybrid that give you both more genetic material to work with, as well as allow you to select for desired traits from two separate strains. This is a complex process to get it to work, and requires access to equipment a little more advanced than what the average home brewer has, but it worked quite well for me. A detailed protocol is beyond what I've written here, but the coles notes version would be: sporulate, mix, select hybrids, grow. Simply mixing strains wont work - sexual reproduction doesn't occur much under the conditions found in beer, and instead you tend to end up with one strain out-competing the other.
6) Multi-culture method: You need several flasks. Inoculate a small amount of yeast into each one, and let it grow. Pick 1 or 2 of the flasks which are the "best" (based on your criteria), dump the rest, make up new flasks, and inoculate the new flasks with small amounts of yeast from the flasks you've selected. Keep repeating this until you get what you're looking for (don't forget to freeze samples so you can rewind if nessisary).
7) Large-culture method: Make beer, drink it, decide if the yeast did a good job. If it did, reuse the yeast for your next batch. If it didn't, chuck the yeast and brew using an older culture. Just make sure you're being consistent in judging whether a beer gets to pass its yeast onto the next "generation" of beer.
Hope that helps.
Bryan