Build a running LED light logic circuit
First, yes, I have read your question, and I'll get back OT in a moment. It has to be said that the easiest, cheapest, smallest hardware, and most flexible way to do this is with 5 100ohm resistors and a PIC or Arduino https://en.wikipedia.org/wiki/Charlieplexing. OK, back on topic.

You want to do it with logic. Presumably to learn logic design? There are many different concepts for how to approach this. If you want to go on to be a chip designer, then using the lowest level constructs possible is the best idea, so gates and latches. This will map well onto the VHDL you will need to use, but will result in a lot of area. You could reduce your component count by going to MSI, so counters, shift registers, decoders, but this will not be such a useful learning aid to IC design.

You have to record state, change state, and drive LEDs. How you partition those alters the flavour of your design. You could have a central counter, determining which LED is on, and then some form of decoding from that to drive the LEDs. Or you could have all state storage done on a per LED basis. 

When I mention part numbers as xxabc, replace the xx with HC or LS or AC or HCT, whatever you can get your hands on. Not all logic types are made in all families. There are some 4000 series CMOS chips whose numbering aligns with the aforementioned series, but most don't.

Starting with one per LED. 'One hot' addressing uses one D-latch per LED. The constraint that they could shift left or right, or be addressed, means each needs at least a 3 input multiplexer on the D input. You can buy dual, 4 input multiplexers, xx153 or xx253. Together with a dual latch, xx74, this gives you one LED per package. This is flexible in the sense that more than one LED can be on at  time. You have basically built a bi-directional addressable shift register from gates. You would still need to implement an address decoder for the 'programmed LED on' function.

An alternative is to buy a bi-directional shift register, xx194, to compress all the latches and multiplexers down into bigger chunks. 

These two shift register approaches have enough control that you can probably control it directly, without the need for a state machine.

In the alternative central counter method, you could use an up/down counter like xx169 (assuming you don't want to build such a counter from gates). There are several alternatives for a static decode to LEDs. One is to use several demultiplexers, like 3off xx138, with each output driving a LED. Or you could configure the LEDs into a 5x4 grid, and use 1 xx138 and half a xx139 to drive rows and columns of it. Or you could cascade 3 off xx595 latched shift register. Different timings of injecting a 1 into the input of the first register, and latching after a number of shifts, will allow you to drive any output. This latter will require a more complicated state machine to control, but is more flexible than the static decoders.

Now you've read some of the options, what do you actually want to do?